Pagini recente » Cod sursa (job #1162450) | Cod sursa (job #462328) | Cod sursa (job #1909983) | Cod sursa (job #1775735) | Cod sursa (job #734096)
Cod sursa(job #734096)
using namespace std;
#include<cstdio>
#define MAX 7200
#define MAX2 930
#define MOD 9901
#define MOD2 999999997
#define llu(a) (a*1LL)
bool ciur[MAX];
int prim[MAX2],k=1;
void ciur_er()
{
int i,j;
prim[k]=2;
for(i=3;i<MAX-1;i+=2)
if(!ciur[i])
{
prim[++k]=i;
for(j=i+i+i;j<MAX-1;j+=i+i)
ciur[j]=1;
}
}
inline long long pow(long long N,long long P)
{
long long sol=1;
while(P)
{
if(P&1)
sol=(sol*N)%MOD2;
N=(N*N)%MOD2;
P>>=1;
}
return sol;
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
ciur_er();
int S=1,P,i;
long long A,B,m;
scanf("%lld %lld",&A,&B); // A la puterea B
if(A==0)
{
printf("0\n");
return 0;
}
for(i=1;(llu(prim[i]*prim[i])<=A)&&(i<=k);i++)
{
if(A%prim[i])
continue;
m=A;
while(A%prim[i]==0)
A=A/prim[i];
P=((pow(m/A,B)*llu(prim[i])-1)/((llu(prim[i])-1)))%MOD;
S=(S*P)%MOD;
}
if(A!=1)
S=(llu(S)*(pow(A,B+1)-1)/(A-1))%MOD;
printf("%d\n",S);
return 0;
}