usaco 2.2 runround 2008.6.20

usaco 2.2 runround 2008.6.20

{简单的模拟,循环不要错了即可}

{

ID:

PROG: runround

LANG: PASCAL

}

program p_runround;

const r:array['1'..'9']oflongint=(1,2,3,4,5,6,7,8,9);

var

  f1,f2:text;

   a:array['0'..'9']oflongint;

  k,b:array[1..9]of longint;

  c:string;l,m:longint;

  flag:boolean;

procedure change;

var i:longint;

   begin

      for i:=1 to l do

         b[i]:=r[c[i]];

   end;

function choose(t:longint):boolean;

var i:longint;ch:char;

begin

 fillchar(a,sizeof(a),0);str(t,c);l:=length(c);

  fori:=1 to l do inc(a[c[i]]);

 choose:=true;if a['0']>0 then choose:=false;

  forch:='1' to '9' do if a[ch]>1 then choose:=false;

end;

procedure doit;

var p:boolean;s,x,t:longint;

begin

 

 repeat

      flag:=true;

    inc(m);p:=choose(m);t:=1;

    writeln(m);

    if p then

       begin

         change;fillchar(k,sizeof(k),0);

         for s:=1 to l do

           begin

              x:=b[t];inc(k[x]);

              t:=(t+x)mod l;if t=0 then t:=l;

           end;{for s}

         for s:=1 to 9 do if k[s]>1 then flag:=false;

        if t<>1 then flag:=false;

       end else flag:=false;{if p}

 until flag;

 writeln(f2,m);

 end;{doit}

 {--------------main-----------------}

 begin

 assign(f1,'runround.in');reset(f1);

 assign(f2,'runround.out');rewrite(f2);

 read(f1,m);

 doit;

 close(f1);close(f2);

 end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值