Pagini recente » Cod sursa (job #1972206) | Cod sursa (job #738384) | Cod sursa (job #2973529) | Cod sursa (job #2073194) | Cod sursa (job #901990)
Cod sursa(job #901990)
#include<cstdio>
using namespace std;
#define MAX 7200
#define MAX2 930
#define MOD 9901
bool ciur[MAX];
int prim[MAX2],k=1,A,B;
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;
}
}
int pow(int N, long long P)
{
int sol=1;
N%=MOD;
while(P)
{
if(P&1)
sol=(sol*N)%MOD;
N=(N*N)%MOD;
P>>=1;
}
return sol;
}
int solve(int nr, int exp)
{
if(nr%MOD==1)
return exp*B+1;
return (pow(nr,1LL*exp*B+1)+MOD-1)*(pow(nr-1,MOD-2))%MOD;
}
int main(int argc, char *argv[])
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
ciur_er();
int S=1,i,p;
scanf("%d %d",&A,&B);
for(i=1;(prim[i]*prim[i]<=A)&&(i<=k);i++)
{
if(A%prim[i])
continue;
p=0;
while(A%prim[i]==0)
{
A=A/prim[i];
p++;
}
S=(S*solve(prim[i],p))%MOD;
}
if(A!=1)
S=(S*solve(A,1))%MOD;
printf("%d\n",S);
return 0;
}