MYSTERY - Số huyền bí
Tác giả: ll931110
Ngôn ngữ: Pascal
Program MYSTERY;
Const
input = '';
output = '';
num = 20122007;
con = 2279340;
Var
a,n: longint;
k: array[1..100000] of longint;
s: int64;
Procedure init;
Var
f: text;
Begin
Assign(f, input);
Reset(f);
Readln(f, a);
Close(f);
End;
Procedure gens;
Var
i: longint;
Begin
n:= 0;
For i:= 1 to trunc(sqrt(a)) do
if a mod i = 0 then
Begin
inc(n);
k[n]:= i mod con;
If i * i <> a then
Begin
inc(n);
k[n]:= (a div i) mod con;
End;
End;
End;
Function power(x,p,q: longint): int64;
Var
u: int64;
Begin
If p = 0 then exit(1);
u:= power(x,p div 2,q);
If odd(p) then power:= (u * u * x) mod q
else power:= (u * u) mod q;
End;
Procedure solve;
Var
f: text;
i,j: longint;
Begin
Assign(f, output);
Rewrite(f);
s:= 1;
For i:= 1 to n do
s:= s * (power(3,k[i],num) - 1) mod num;
Writeln(f, s);
Close(f);
End;
Begin
init;
gens;
solve;
End.