Pagini recente » Cod sursa (job #1678205) | Cod sursa (job #755777) | Cod sursa (job #1426654) | Cod sursa (job #2344077) | Cod sursa (job #802088)
Cod sursa(job #802088)
#include<fstream>
#include<cstdio>
#define MODULO 9901
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int A[1000],m[1000];
int i,act,a,b;
int rez;
inline int funct(int N,int K)
{
int rez=1;
for(int i=0;(1<<i)<=K;++i)
{
if (K&(1<<i))
rez=(rez*N)%MODULO;
N=(N*N)%MODULO;
}
return rez;
}
int recurent(int a, int b)
{
if (b==1)
return a;
if (b==0)
return 0;
if (b & 1)
return (a*(1+recurent(a,b-1)))%MODULO;
else
return (recurent(a,b>>1)*(1+funct(a,b>>1)))%MODULO;
}
int main()
{
f>>a>>b;
for(i=2;i*i<=a;++i)
{
if (a % i != 0)
continue;
A[++A[0]] = i;
while (a % i == 0)
{
a /= i;
++m[A[0]];
}
}
if(a!=1)
{
A[++A[0]] = a;
m[A[0]] = 1;
}
for (i=1;i<=A[0];++i)
{
m[i]*=b;
A[i]%=MODULO;
}
rez=1;
for(i=1;i<=A[0];++i)
rez=(rez*(recurent(A[i],m[i])+1))%MODULO;
g<<rez;
return 0;
}