MYSTERY - Số huyền bí

Tác giả: hieult

Ngôn ngữ: C++

#include <stdio.h>
//#include <conio.h>
#include <math.h>
long long f(long long n)
{
if(n<=15)
  return (long long)(pow(3,n));
else if(n%2==0)
  return (long long)(pow(f(n/2),2))%20122007;
else return (long long)(3*f(n-1))%20122007;
}
main()
{
long long N,KQ=1;
scanf("%lld",&N);
for(long long i=1;i<=sqrt(N);i++)
  {
  if(i*i==N)
    KQ=KQ*(f(i)-1)%20122007;
  else if(N%i==0)
    {
    KQ=KQ*(f(i)-1)%20122007;
    KQ=KQ*(f(N/i)-1)%20122007;
    }
  }
printf("%lld",KQ);
//getch();
}              

Download