Pagini recente » Cod sursa (job #670208) | Cod sursa (job #435115) | Cod sursa (job #2328179) | Cod sursa (job #687759) | Cod sursa (job #470893)
Cod sursa(job #470893)
#include <cstdio>
#define file_in "sumdiv.in"
#define file_out "sumdiv.out"
int A,B;
void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &A, &B);
}
#define mod 9901
inline int prodMod(int x, int y)
{
return (x*y)%mod;
}
inline int power(int a, int b)
{
int x;
if (!b)
return 1;
x=power(a,b>>1);
x=prodMod(x,x);
if (b&1)
x=prodMod(x,a);
return x;
}
inline int invMod(int a)
{
if (!a)
return 0;
int rez=1;
while (rez%a)
rez+=mod;
return rez/a;
}
inline int progresie(int n, int e)
{
if (n==1)
return (e+1)%mod;
return prodMod((power(n,e+1)+mod-1)%mod,invMod((n+mod-1)%mod));
}
void solve()
{
int S,p,d;
S=0;
for (p=0;!(A&1);++p,A>>=1);
S=progresie(2,p*B);
for (d=3;d*d<=A;d+=2)
{
if (!(A%d))
{
for (p=0;!(A%d);++p,A/=d);
S=(S*progresie(d%mod,p*B))%mod;
}
}
if (A>1)
S=(S*progresie(A%mod,B))%mod;
printf("%d\n", S);
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}