pku1286的一个pascal程序我为什么交上去总是runtime error,在自己电脑上就没问题

[复制链接]
查看11 | 回复2 | 2011-2-16 20:03:25 | 显示全部楼层 |阅读模式
var a:array[0..25] of longint;

p:array[0..25] of int64;

ans,nn:int64;

i,j,k,l,n,t,d:longint;
procedure did;
begin
t:=0;
for k:=1 to n do
if a[k]>0 then begin
inc(t);l:=k;d:=k;
while a[l]0 do begin

l:=a[l];a[d]:=0;d:=l; end;end;
end;
begin
//assign(input,'1286.in');reset(input);
//assign(output,'1286.out');rewrite(output);
p[0]:=1;
for i:=1 to 24 do
p:=p[i-1]*3;
repeat
readln(n);
if n=-1 then break;
ans:=0;nn:=n;
for i:=0 to 1 do
for j:=1 to n do begin

if i=0 then begin

a[1]:=j;

for k:=2 to n do

a[k]:=(a[k-1]mod n)+1;

did;

ans:=ans+p[t];end

else begin

a[n]:=j;

for k:=n-1 downto 1 do

a[k]:=a[k+1]mod n+1;

did;

ans:=ans+p[t];end;end;
writeln(ans/2/nn:0:0);
until n=-1;
// close(input);close(output);
end.

回复

使用道具 举报

千问 | 2011-2-16 20:03:25 | 显示全部楼层
n有可能是0,/(2*n) 就runtinme error (被零除)
回复

使用道具 举报

千问 | 2011-2-16 20:03:25 | 显示全部楼层
数组开太小了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行