主题:[讨论]急急 第10届普及组奥赛答案错误 望给予解析
[em10]
请问各位
第10届信息技术普及组奥赛复赛有1道题
我在别的网站上下下来 我看了一下怎么有的地方不对啊????[em10]
程序:program martian; {writen by lxq 2004.11.20}
const maxn=10000;
var a:array[1..maxn+1] of integer;
b:array[1..maxn+1] of boolean;
n,m,i,p,k:integer;
begin
assign(input,'martian.in');
reset(input);
readln(n);
readln(m);
fillchar(b,sizeof(b),false);
for i:=1 to n do begin read(a[ i ]);b[a[ i ]]:=true end;p:=n+1;
k:=-1;
while true do
begin (这里怎么没有i的赋值怎么算下面??)
if p>n then begin
dec(p);
inc(k);
b[a[ i >:=false; (这儿)
if k=m then break;
end;
repeat inc(a[ i ] ); until not b[a[ i ] ]; b[a[ i ] ]:=true;
if a[ i ] >n then
begin b[a[ i ] ]:=false;dec(p);b[a[ i ]]:=false end
else
begin inc(p); a[ i ] :=0 end;
end;
assign(output,'martian.out');
rewrite(output);
for i:=1 to n-1 do write(a[ i ],' ');writeln(a[n]);
close(output)
end.
请问各位
第10届信息技术普及组奥赛复赛有1道题
我在别的网站上下下来 我看了一下怎么有的地方不对啊????[em10]
程序:program martian; {writen by lxq 2004.11.20}
const maxn=10000;
var a:array[1..maxn+1] of integer;
b:array[1..maxn+1] of boolean;
n,m,i,p,k:integer;
begin
assign(input,'martian.in');
reset(input);
readln(n);
readln(m);
fillchar(b,sizeof(b),false);
for i:=1 to n do begin read(a[ i ]);b[a[ i ]]:=true end;p:=n+1;
k:=-1;
while true do
begin (这里怎么没有i的赋值怎么算下面??)
if p>n then begin
dec(p);
inc(k);
b[a[ i >:=false; (这儿)
if k=m then break;
end;
repeat inc(a[ i ] ); until not b[a[ i ] ]; b[a[ i ] ]:=true;
if a[ i ] >n then
begin b[a[ i ] ]:=false;dec(p);b[a[ i ]]:=false end
else
begin inc(p); a[ i ] :=0 end;
end;
assign(output,'martian.out');
rewrite(output);
for i:=1 to n-1 do write(a[ i ],' ');writeln(a[n]);
close(output)
end.