回 帖 发 新 帖 刷新版面

主题:[讨论]急急   第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.

回复列表 (共2个回复)

沙发

怎么没回的啊 ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
我又有了1个问题
麦森数的那道题

板凳

[quote]
这里怎么没有i的赋值怎么算下面[/quote]
显然那个i在For i:=1 to n的循环完毕之后就变成n了

我来回复

您尚未登录,请登录后再回复。点此登录或注册