p1530.pas

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 75 行

PAS
75
字号
PROGRAM p1530;


VAR
        puss    :array[1..200]of integer;
        num     :integer;
        n       :Integer;
        what    :array[1..200]of integer;
        whether :array[0..200]of boolean;
        leave   :array[1..200]of integer;



PROCEDURE print(p:integer);
begin
if p=1 then write(1)
        else
        begin
        print(puss[p]);
        write(what[p]);
        end;
end;

PROCEDURE wfs;

var
        s,t     :integer;
        find    :boolean;
begin
if n=1 then
        begin
        writeln(1);
        exit;
        end;
fillchar(whether,sizeof(whether),false);
s:=1;
t:=1;
puss[1]:=0;
what[1]:=1;
whether[1]:=true;
leave[1]:=1;
find:=false;
repeat
if not whether[(leave[s]*10) mod n] then
        begin
        inc(t);
        leave[t]:=(leave[s]*10) mod n;
        what[t]:=0;
        whether[(leave[s]*10) mod n]:=true;
        puss[t]:=s;
        if whether[0] then find:=true;
        end;
if (not find)and(not whether[(leave[s]*10+1) mod n]) then
        begin
        inc(t);
        leave[t]:=(leave[s]*10+1) mod n;
        what[t]:=1;
        whether[(leave[s]*10+1) mod n]:=true;
        if whether[0] then find:=true;
        puss[t]:=s;
        end;
inc(s);
until find;
print(t);
writeln;
end;

BEGIN
readln(n);
while n<>0 do
        begin
        wfs;
        readln(n);
        end;
END.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?