Pagini recente » Cod sursa (job #654741) | Cod sursa (job #1722124) | Cod sursa (job #1483432) | Cod sursa (job #2078243) | Cod sursa (job #1174617)
#include <fstream>
using namespace std;
const int mod=9901;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
inline int putere(int a,long long p)
{
int result=1;
while(p)
{
if(p&1) result=(1LL*result*a)%mod;
a=(1LL*a*a)%mod;
p>>=1;
}
return result;
}
struct desc
{int fact,cat;} v[25];
int main()
{
int a,b,k=0,div=0,i,inv,sum,tot=1;
fin>>a>>b;
if(!(a&1))
{
v[++k].fact=2;
while( !(a&1) ) div++,a>>=1;
v[k].cat=div;
}
for(i=3;i*i<=a;i++)
{
div=0;
while(a%i==0) div++,a/=i;
if(div>0) v[++k].fact=i,v[k].cat=div;
}
if(a>1) v[++k].fact=a,v[k].cat=1;
for(i=1;i<=k;i++)
{
sum=(putere(v[i].fact,1LL*b*v[i].cat+1)-1+mod)%mod;
inv=putere(v[i].fact-1,1LL*(mod-2))%mod;
tot*=(1LL*sum*inv)%mod;
}
fout<<tot;
}