p2105.pas

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

PAS
45
字号
PROGRAM p2105;


VAR
        a,b                                     :Integer;
        n                                       :Longint;
        total                                   :Integer;
        pos                                     :array[0..6,0..6]of Integer;
        save                                    :array[1..52]of Integer;

PROCEDURE Main;
var
        i,j                                    :Integer;
        ans,l,w                                     :Longint;
begin
save[1]:=1;
save[2]:=1;
i:=3;
fillchar(pos,sizeof(pos),0);
pos[1,1]:=1;
repeat
        save[i]:=(save[i-1]*a+save[i-2]*b) mod 7;
        if pos[save[i],save[i-1]]=0 then pos[save[i],save[i-1]]:=i-1 else break;
        inc(i);
until false;

l:=i-1-pos[save[i],save[i-1]];

if n<=pos[save[i],save[i-1]] then writeln(save[n])
        else
        begin
        w:=n-pos[save[i],save[i-1]]+1;
        if w mod l=0 then writeln(save[i-2]) else
                writeln(save[(w mod l)+pos[save[i],save[i-1]]-1]);
        end;
end;

BEGIN
readln(a,b,n);
while (a<>0)or(b<>0)or(n<>0) do
        begin
        Main;
        readln(a,b,n);
        end;
END.

⌨️ 快捷键说明

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