Pagini recente » Istoria paginii utilizator/patriciaxd | Cod sursa (job #585093) | Cod sursa (job #1253480) | Cod sursa (job #1617130) | Cod sursa (job #405853)
Cod sursa(job #405853)
#include<fstream>
using namespace std;
const char iname[]="sumdiv.in";
const char oname[]="sumdiv.out";
const long long mod=9901;
ifstream f(iname);
ofstream g(oname);
long long a,b,i,j,k,rez;
long long powx(long long x,long long y)
{
x%=mod;
long long sol=1;
while(y)
{
if(y&1)
sol*=x,sol%=mod;
x*=x;
x%=mod;
y>>=1;
}
return sol;
}
long long ans(long long x,long long p)
{
if(x%mod==1)
return p*b+1;
return ((powx(x,p*b+1)+mod-1)*powx(x-1,mod-2))%mod;
}
int main()
{
f>>a>>b;
rez=1;
for(i=2;i*i<=a;++i)
if(a%i==0)
{
j=0;
while(a%i==0)
{
++j;
a/=i;
}
if(i%mod==1)
{
rez*=j*b+1,rez%=mod;
continue;
}
rez*=ans(i,j);
rez%=mod;
}
if(a>1)
{
rez*=ans(a,1);
rez%=mod;
}
g<<rez<<"\n";
f.close();
g.close();
return 0;
}