PersonalCorpus 版 (精华区)

153699 07:56:10 4 Mar 2002
Bozhang,HIT,P.R.China 1024 Pascal Accepted 0.02 sec 49K


var
    a:array[1..1000] of word;
    res,i,j,k,l,n:integer;
function gcd(a,b:integer):integer;
begin
    while a<>b do begin
        if a mod b=0 then begin result:=b; exit end;
        a:=a mod b;
        if b mod a=0 then begin result:=a; exit end;
        b:=b mod a;
    end;
    result:=a;
end;
begin
    readln(n);
    for i:=1 to n do read(a[i]);
    res:=1; k:=1;
    while k<>n+1 do begin
        i:=1;j:=a[k]; a[k]:=0;
        while j<>k do begin inc(i); l:=a[j]; a[j]:=0; j:=l  end;
        l:=gcd(res,i);
        res:=res*(i div l);
        for k:=1 to n do if a[k]<>0 then break;
    end;
    writeln(res);
end.
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.715毫秒