Pagini recente » Cod sursa (job #3195071) | Cod sursa (job #3178220) | Cod sursa (job #411097) | Cod sursa (job #3283239) | Cod sursa (job #3287509)
#include <bits/stdc++.h>
#define mod 9901
using namespace std;
unsigned long long a,b,pu[20],pu2[20],di[20],ct;
unsigned long long expo(unsigned long long x,unsigned long long exp)
{
if (exp==0)
return 1;
if (exp%2==1)
return x%mod*expo(x,exp-1)%mod;
long long y=expo(x,exp/2);
return y*y%mod;
}
int main()
{
ifstream f ("sumdiv.in");
ofstream g ("sumdiv.out");
f>>a>>b;
for (unsigned long long i=2; i*i<=a && a!=1; i++)
{
if (a%i==0)
{
unsigned long long d=i,p=0;
while (a%d==0)
{
a/=d;
p++;
}
di[++ct]=d%mod;
pu[ct]=b;
pu2[ct]=p;
}
}
unsigned long long rsp=1;
if (a>1 && (a-1)%mod)
di[++ct]=a%mod,pu[ct]=b,pu2[ct]=1;
else if (a>1)
rsp=rsp*(b+1)%mod;
for (int i=1; i<=ct; i++)
{
unsigned long long r=1,pp=expo(di[i],pu[i]);
for (int j=1;j<=pu2[i];j++)
r=r*pp%mod;
r=r*di[i]%mod;
rsp=rsp*(r+mod-1)%mod*expo(di[i]-1,mod-2)%mod;
}
g<<rsp;
}