MYSTERY - Số huyền bí
Tác giả: ladpro98
Ngôn ngữ: Pascal
program mystery;
uses math;
const loop=84420;
base=20122007;
var pow:array[0..100000] of longint;
n,i,k:longint;
res:int64;
begin
readln(n);
i:=0;
pow[0]:=1;
for i:=1 to loop do
pow[i]:=(pow[i-1]*3) mod base;
res:=1;
for i:=1 to trunc(sqrt(n)) do
begin
if n mod i = 0 then
begin
res:=(res*(pow[i mod loop]-1)) mod base;
k:=n div i;
if k<>i then
res:=(res*(pow[k mod loop]-1)) mod base;
end;
end;
write(res);
end.