Pagini recente » Cod sursa (job #2090063) | Cod sursa (job #2263564) | Cod sursa (job #1224026) | Cod sursa (job #368196) | Cod sursa (job #306672)
Cod sursa(job #306672)
#include <cstdio>
using namespace std;
#define file_in "sumdiv.in"
#define file_out "sumdiv.out"
#define Nmax 1010
#define prim 9901
#define ll long long
#define ii inline
ll x,y;
ll a[Nmax];
ll b[Nmax];
ll sol,nr,p;
ii ll put(ll a, ll b)
{
ll x;
if (b==1)
return a;
else
if (b%2==0)
{
x=put(a,b/2);
return (x*x)%prim;
}
else
{
x=put(a,b/2);
return (((x*x)%prim)*a)%prim;
}
}
ii void div()
{
ll i;
for (i=2;i<=x;++i)
{
nr++;
a[nr]=i;
while(x%i==0)
{
x/=i;
++b[nr];
}
}
}
ii void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%lld %lld", &x,&y);
}
ii void solve()
{
ll i;
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();
div();
solve();
scrie();
fclose(stdin);
fclose(stdout);
return 0;
}