Pagini recente » Cod sursa (job #2853088) | Cod sursa (job #2631995) | Cod sursa (job #2765930) | Cod sursa (job #2633318) | Cod sursa (job #3121716)
#include <bits/stdc++.h>
#define cin in
#define cout out
#define ll long long
#define MOD 9901
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
ll a,b,rez=1,d=3,p,X,Y;
ll expr(ll a,ll b)
{
if(b==0) return 1;
else
{
ll p=expr(a,b/2);
if(b%2==0)
return p*p%MOD;
else
return p*p%MOD*a%MOD;
}
}
void invmod(ll a,ll b,ll& x,ll& y)
{
if(b==0) x=y=1;
else
{
ll x1,y1;
invmod(b,a%b,x1,y1);
x=y1;
y=x1-a/b*y1;
}
}
int main()
{
cin>>a>>b;
while(a%2==0)
a/=2,p++;
if(p)
{
rez=rez*(expr(2,p*b+1)%MOD+MOD-1)%MOD;
invmod(1,MOD,X,Y);
if(X<0) X+=MOD;
rez=rez*X%MOD;
}
while(d*d<=a)
{
p=0;
while(a%d==0)
a/=d,p++;
if(p)
{
rez=rez*(expr(d,p*b+1)%MOD+MOD-1)%MOD;
invmod(d-1,MOD,X,Y);
if(X<0) X+=MOD;
rez=rez*X%MOD;
}
d+=2;
}
if(a>1)
{
rez=rez*(expr(a,b+1)%MOD+MOD-1)%MOD;
invmod(a-1,MOD,X,Y);
if(X<0) X+=MOD;
rez=rez*X%MOD;
}
cout<<rez;
return 0;
}