Pagini recente » Cod sursa (job #1672696) | Cod sursa (job #2409593) | Cod sursa (job #2161210) | Cod sursa (job #1453741) | Cod sursa (job #228452)
Cod sursa(job #228452)
#include<stdio.h>
#include<stdlib.h>
#define M 9901
FILE*f=fopen("sumdiv.in","r");
FILE*g=fopen("sumdiv.out","w");
int a,b,P=1;
inline int modulo(int x)
{
if(x>=0) return x%M;
return M - (abs(x)%M);
}
int putere(int a, int b) //ridic a la puterea b
{
int 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(int n, int b)
{
int 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
sol=modulo((modulo(putere(i,r+1)-1)) * modulo(putere(i-1, 9901-2)));
P=(P*sol)%M;
}
}
if(n>1)
{
r=b;
// calculez i^0 + i^1 + ... + i^r
sol=modulo(modulo(putere(n,r+1)-1) * modulo(putere(n-1, 9901-2)));
P=(P*sol)%M;
}
fprintf(g,"%d\n",P);
}
int main()
{
fscanf(f,"%d %d",&a,&b);
solve(a,b);
return 0;
}