Pagini recente » Cod sursa (job #3154482) | Cod sursa (job #476578) | Cod sursa (job #2767386) | Cod sursa (job #19939) | Cod sursa (job #851295)
Cod sursa(job #851295)
#include<stdio.h>
#include<vector>
#include<algorithm>
#define d first
#define e second
#define mp make_pair
using namespace std;
vector< pair<int,int> > v;
int power(int a,int n,int k)
{
int r=1;
for(r=1,a=a%k;n;n>>=1)
{
if(n&1)
r=(r*a)%k;
a=(a*a)%k;
}
return r;
}
int invmod(int x)
{
return power(x,9901-1-1,9901);
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
int i,d,a,b,ca,rez=1,r=1;
scanf("%d%d",&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<(int)v.size();i++)
{
v[i].e*=b;
int 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("%d\n",rez);
return 0;
}