Pagini recente » Cod sursa (job #1252906) | Cod sursa (job #1908547) | Cod sursa (job #2104860) | Cod sursa (job #1010984) | Cod sursa (job #2000718)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const int mod=9901;
long long pu[30],pr[30],A,B,i,j,fix,prim,k,tot;
long long put(int unu,long long doi)
{
int ans=1,p2=(unu%mod);
for(long long p=0;p<=60;p++)
{
if(((1LL<<p)&doi))
{
ans=(ans*p2)%mod;
}
p2=(p2*p2)%mod;
}
return ans;
}
long long divide(long long P)
{
if(P==1)
return 1;
int ret=divide(P/2);
ret=(ret+(ret*put(prim,P/2))%mod)%mod;
if(P%2)
ret=(ret+put(prim,P))%mod;
return ret;
}
int main()
{
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
f>>A>>B;
i=2;fix=(int)floor(sqrt(A))+5;
while(i<=fix)
{
if(A%i==0)
{
k++;pr[k]=i;
while(A%i==0)
{
A/=i;
pu[k]++;
}
}
i++;
}
if(A!=1)
{
k++;
pr[k]=A;pu[k]=1;
}
tot=1;
for(i=1;i<=k;i++)
{
prim=(pr[i]%mod);
tot=(tot*divide(1LL*pu[i]*B+1))%mod;
}
g<<tot;
return 0;
}