Pagini recente » Monitorul de evaluare | Cod sursa (job #156543) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2573670)
#include <bits/stdc++.h>
#define ull unsigned long long
using namespace std;
ifstream f ("sumdiv.in");
ofstream g("sumdiv.out");
long long int sol=1,exponent,mod=9901,n,k;
long long int lgpow(long long int a,long long int b)
{
long long int rez=1;
while(b>0)
{
if(b%2==1)
{
rez=(rez*a)%mod;
b--;
}
a=(a*a)%mod;
b=b/2;
}
return rez;
}
int invmod(int b)
{
return lgpow(b,mod-2);
}
int main()
{
f>>n>>k;
if(n%2==0)
{
while(n%2==0)
{
n/=2;
exponent++;
}
exponent=exponent*k;
sol=1LL*sol*(((lgpow(2,exponent+1)-1+mod)%mod)*(invmod(1))%mod);
}
for(int i=3;i*i<=n;i+=2)
{
int exponent=0;
if(n%i==0)
{
while(n%i==0)
{
n=n/i;
exponent++;
}
exponent=exponent*k;
sol=1LL*sol*(((lgpow(i,exponent+1)-1+mod)%mod)*invmod(i-1))%mod;
}
}
if(n!=1)
{
sol=1LL*sol*(((lgpow(n,k+1)-1+mod)%mod)*invmod(n-1))%mod;
}
g<<sol;
}