Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

谁能帮忙查查这程序为何总是Runtime error,多谢了

Posted by hmev at 2009-05-12 07:40:04 on Problem 2886
RT

program poj2886;
 const antiprime:array[1..37] of longint=(1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260,1680,2520,5040,7560,10080,15120,20160,25200,27720,45360,50400,55440,83160,110880,166320, 221760, 277200, 332640, 498960, 554400, 665280);
       factorNum:array[1..37] of integer=(1, 2, 3, 4, 6, 8, 9, 10, 12, 16, 18, 20, 24, 30, 32, 36, 40, 48, 60, 64, 72, 80, 84, 90, 96, 100, 108, 120, 128, 144, 160, 168, 180, 192, 200, 216, 224);
 var tree:array[0..4*500001] of record l,r,space:longint; end;
     next:array[0..500001] of longint;
     name:array[0..500001] of string[12];
     i,t,k,kk,num,n:longint;
     ch:char;

 procedure maketree(k,l,r:longint);
  begin
   tree[k].l:=l; tree[k].r:=r; tree[k].space:=r-l;
   if l+1<r then
    begin
     maketree(k shl 1,l,(l+r) shr 1);
     maketree(k shl 1+1,(l+r) shr 1,r);
    end;
  end;

 procedure insert(k,x:longint);
  begin
   with tree[k] do
    begin
     dec(space);
     if l+1=r then begin kk:=r; exit; end;
     if x<=tree[k shl 1].space
        then insert(k shl 1,x)
        else insert(k shl 1+1,x-tree[k shl 1].space);
    end;
  end;

 begin
  assign(input,'input.txt'); reset(input);
  assign(output,'output.txt'); rewrite(output);

  readln(n,k);
  for i:=1 to n do
   begin
    read(ch); name[i]:='';
    while ch<>' ' do
     begin
      name[i]:=name[i]+ch;
      read(ch);
     end;
    readln(next[i]);
   end;
  maketree(1,0,n);

  t:=1;
  while antiprime[t]<n do inc(t);
  num:=antiprime[t];

  kk:=0; next[kk]:=0;
  while num>0 do
   begin
    dec(num);
    if (next[kk]>0) then k:=((k+next[kk]-2) mod n+n) mod n+1
                    else k:=((k+next[kk]-1) mod n+n) mod n+1;
    insert(1,k);
    dec(n);
   end;
  writeln(name[kk],' ',factornum[t]);

  close(input); close(output);
 end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator