Pagini recente » Cod sursa (job #1755410) | Cod sursa (job #2544152) | Cod sursa (job #2551891) | Cod sursa (job #71716) | Cod sursa (job #582535)
Cod sursa(job #582535)
#include<cstdio>
using namespace std;
#define MOD 9901
#define LL long long
int N,M;
inline int mod(int a)
{
if (a>=MOD)
a%=MOD;
return a;
}
inline LL putere(LL n,int p)
{
if (!p)
return 1;
n=mod((LL)n);
if (p&1)
return (LL)n*putere((LL)mod((LL)n*(LL)n),p>>1)%MOD;
return putere((LL)mod((LL)n*(LL)n),p>>1)%MOD;
}
inline void desc()
{
int suma=1,baza=1;
int i=2;
for ( i=2; i*i<=N ; ++i)
{
if (N%i!=0)
continue;
int p=0;
while (N%i==0)
{
N/=i;
++p;
}
if (!p)
continue;
if (p==1)
--p;
int n=mod(i);
baza=mod(putere((LL)n,M+p+1));
if (baza-1<0)
baza=MOD-baza;
n=mod(i);
suma=mod((LL)(baza-1)/(LL)(n-1)*(LL)suma);
}
if (N-1)
{
int n=mod(N);
baza=mod(putere(n,M+1));
if (baza-1<0)
baza=MOD-baza;
n=mod(N);
suma=mod((baza-1)/(n-1)*suma);
}
printf("%d ",suma);
}
inline void citire()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%d%d",&N,&M);
desc();
}
int main()
{
citire();
return 0;
}