Pagini recente » Cod sursa (job #2394234) | Cod sursa (job #684522) | Cod sursa (job #2564395) | Cod sursa (job #1583813) | Cod sursa (job #228463)
Cod sursa(job #228463)
#include<stdio.h>
#include<stdlib.h>
#define M 9901
#define ll long long
FILE*f=fopen("sumdiv.in","r");
FILE*g=fopen("sumdiv.out","w");
ll a,b,P=1;
inline ll modulo(ll x)
{
if(x>=0) return x%M;
return M - (abs(x)%M);
}
ll putere(ll a, ll b) //ridic a la puterea b
{
ll rez=1;
while(b)
{
if(b%2==0)
{
a=modulo(a*a);
b/=2;
}
else
{
--b;
rez=modulo(rez*a);
}
}
//if(rez==0) return 9901;
return rez;
}
void solve(ll n, ll b)
{
ll sol,i,r;
for(i=2;i*i<=n;++i)
{
if(n%i==0)
{
for(r=0;n%i==0;++r,n/=i);
r*=b;
// calculez i^0 + i^1 + ... + i^r
if(i%9901==1)
{
sol=r+1;
}
else sol=modulo((modulo(putere(i,r+1)+9900)) * modulo(putere(i-1, 9901-2)));
P=(P*sol)%M;
}
}
if(n>1)
{
r=b;
// calculez i^0 + i^1 + ... + i^r
if(n%M==1) sol=r+1;
else sol=modulo(modulo(putere(n,r+1)+9900) * modulo(putere(n-1, 9901-2)));
P=(P*sol)%M;
}
fprintf(g,"%lld\n",P);
}
int main()
{
fscanf(f,"%lld %lld",&a,&b);
solve(a,b);
return 0;
}