Pagini recente » Cod sursa (job #1565334) | Cod sursa (job #2147162) | Cod sursa (job #2171484) | Cod sursa (job #329564) | Cod sursa (job #318617)
Cod sursa(job #318617)
#include <cstdio>
#define file_in "sumdiv.in"
#define file_out "sumdiv.out"
#define Nmax 10
#define prim 9901
#define ll long long
#define ii inline
ll x,y;
ll a[Nmax];
ll b[Nmax];
ll sol,nr=0,p,xx;
ii ll put(ll x, ll y)
{
ll p=1,k;
for (k=y;k>0;k>>=1)
{
if (k%2==1)
p=(p*x)%prim;
x=(x*x)%prim;
}
return p;
}
ii void div()
{
ll i;
for (i=2;i*i<=x;++i)
{
if (x%i==0)
{
nr++;
a[nr]=i;
while(x%i==0)
{
x/=i;
++b[nr];
}
}
}
if (x!=1)
{
nr++;
a[nr]=x;
b[nr]=1;
}
}
ii void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%lld %lld", &x,&y);
}
ii void solve()
{
ll i;
div();
sol=1;
for (i=1;i<=nr;++i)
{
b[i]=b[i]*y;
if (a[i]%prim==1)
{
p=b[i]+1;
}
else
{
p=(put(a[i],b[i])*a[i]+prim-1)%prim;
p=(p*put(a[i]-1,prim-2)%prim)%prim;
}
sol=(sol*p)%prim;
}
}
ii void scrie()
{
printf("%lld", sol);
}
int main()
{
citire();
solve();
scrie();
fclose(stdin);
fclose(stdout);
return 0;
}