Pagini recente » Cod sursa (job #2843487) | Monitorul de evaluare | Profil StarGold2 | Statistici Diana Olivia Dumbrava (dumbravadiana) | Cod sursa (job #530192)
Cod sursa(job #530192)
#include <fstream>
using namespace std;
const int M=9901;
int inv[M],a,b,s;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
int fpow(long long a,long long n)
{
if(n==0)
return 1;
if(n%2)
return a*fpow(a*a%M,n/2)%M;
return fpow(a*a%M,n/2);
}
int invers(int x)
{
for(int i=1;i<M;++i)
{
if((i*x)%M==1)
{
inv[x]=i;
inv[i]=x;
return i;
}
}
return 0;
}
void desc()
{
int p=0,j;
s=1;
for(int i=2;i*i<=a;++i)
{
if(a%i!=0)
continue;
p=0;
while(a%i==0)
{
a/=i;
++p;
}
if(i%M==1)
s*=p*b+1;
else
{
if(i%M==0)
j=M-1;
else
j=(i-1)%M;
if(j==0)
{
s*=(p*b+1);
s%=M;
continue;
}
if(inv[j]!=0)
{
s*=(fpow(i,p*b+1)+M-1)%M*inv[j]%M;
s%=M;
}
else
{
s*=(fpow(i,p*b+1)+M-1)%M*invers(j)%M;
s%=M;
}
}
}
if(a!=1)
{
if(a%M==1)
{
s*=b%M+1;
s%=M;
}
else
{
s*=(fpow(a,b+1)+M-1)%M*invers((a+M-1)%M)%M;
s%=M;
}
}
}
void work()
{
in>>a>>b;
desc();
out<<s;
}
int main()
{
work();
return 0;
}