Pagini recente » Cod sursa (job #2836582) | Cod sursa (job #1703290) | Cod sursa (job #92602) | Cod sursa (job #1921717) | Cod sursa (job #1810343)
# include <fstream>
# define DIM 8000
# define MOD 9901
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int f[DIM],d[DIM/5],a,b,k,i,j,s,nr;
int putere(int a,int b){
if(b==0)
return 1;
int t=putere(a,b/2);
if(b%2==1)
return (t*a%MOD)*t%MOD;
else
return t*t%MOD;
}
int euclid(int a,int b,int &x,int &y){
if(!b){
x=1;
y=0;
return a;
}
int xa,ya,r=euclid(b,a%b,xa,ya);
x=ya;
y=xa-(a/b)*ya;
return r;
}
void op(int d,int p){
int dp=putere(d,p+1),x,y;
euclid(d-1,MOD,x,y);
dp-=1;
if(dp<0)
dp+=MOD;
s*=dp;
s%=MOD;
x%=MOD;
if(x<0)
x+=MOD;
s*=x;
s%=MOD;
}
int main () {
fin>>a>>b;
s=1;
for(i=2;i*i<=a;i++){
if(!f[i]){
d[++k]=i;
for(j=2*i;j*j<=a;j+=i)
f[j]=1;
}
}
for(i=1;i<=k;i++){
nr=0;
while(a%d[i]){
a/=d[i];
nr++;
}
if(nr)
op(d[i],nr*b);
}
if(a!=1)
op(a,b);
fout<<s<<"\n";
return 0;
}