Pagini recente » Cod sursa (job #586128) | Cod sursa (job #378780) | Cod sursa (job #1360274) | Cod sursa (job #2449227) | Cod sursa (job #851299)
Cod sursa(job #851299)
#include<stdio.h>
#include<vector>
#include<algorithm>
#define d first
#define e second
#define mp make_pair
using namespace std;
vector< pair<long long,long long> > v;
long long power(long long a,long long n,long long k)
{
long long r=1;
for(r=1,a=a%k;n;n>>=1)
{
if(n&1)
r=(r*a)%k;
a=(a*a)%k;
}
return r;
}
long long invmod(long long x)
{
return power(x,9901-1-1,9901);
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
long long i,d,a,b,ca,rez=1,r=1;
scanf("%lld%lld",&a,&b);ca=a;
for(d=2;d*d<=ca && a>1;d++)
if(a%d==0)
{
v.push_back(mp(d,0));
while(a%d==0) {a=a/d;v[v.size()-1].e++;}
}
if(a>1) v.push_back(mp(a,1));
for(i=0;i<(long long)v.size();i++)
{
v[i].e*=b;
long long x,y;
x=power(v[i].d,v[i].e+1,9901)-1;if(x==-1) x=9900;
y=v[i].d-1;
r=(x*invmod(y))%9901;
rez=(rez*r)%9901;
}
printf("%lld\n",rez);
return 0;
}