Pagini recente » Cod sursa (job #2734718) | Cod sursa (job #1699625) | Cod sursa (job #684514) | Cod sursa (job #1458542) | Cod sursa (job #295901)
Cod sursa(job #295901)
#include<stdio.h>
FILE*f=fopen("sumdiv.in","r");
FILE*g=fopen("sumdiv.out","w");
long long a,b;
int ba[101],ex[101],n,pr=1;
long long mod(long long x,long long y,long long z)
{
long long s;
if(y==1) return x%z;
else if(y%2==0) {
s=mod(x,y/2,z);
return (s*s)%z;
}
else return (mod(x,y-1,z)*mod(x,1,z))%z;
}
void fact()
{
long long i,r;
for(i=2;i*i<=a;i++)
{
if(a%i==0) {
r=0;
while(a%i==0) {
r++;
a/=i;
}
if(r) {
ba[++n]=i;
ex[n]=r;
}
}
}
if(a>1) {
ba[++n]=a;
ex[n]=1;
}
}
void sum()
{
int i,j;
long long x,y,t,z,z1;
for(i=1;i<=n;i++)
{
x=ba[i];y=(ex[i]*b);
if(x%a==1) t=y+1;
else {
z=mod(x,y+1,9901)+9900;
if(z<0) z=-z;
z1=mod(x-1,9899,9901);
t=(z*z1)%9901;
}
pr=(pr*t)%9901;
}
fprintf(g,"%d",pr);
}
int main()
{
fscanf(f,"%lld%lld",&a,&b);
fact();
sum();
fcloseall();
return 0;
}