Pagini recente » Cod sursa (job #2550737) | Cod sursa (job #2533077) | Cod sursa (job #3178402) | Cod sursa (job #1285781) | Cod sursa (job #687211)
Cod sursa(job #687211)
#include<fstream>
#include<cmath>
#define lim 500001
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long A,B,nr,v[lim+1],prim[50001];
void ciur (){
prim[1]=2;
prim[-1]=1;
for(int i=3;i<=lim;i+=2)
if(v[i]==0){
prim[++prim[-1]]=i;
for(int j=i+i;j<=lim;j+=i)
v[j]=i;
}
}
long long putere (long long a,long long b){
if(b!=0)
return a*putere(a,b-1);
else
return 1;
}
void determinare(long long r){
long long ndiv, suma, t, i, ex;
ndiv=suma=1;
for(i=1;prim[i]*prim[i]<=r;i++){
if(r%prim[i]==0){
ex=1;
t=prim[i];
while(r%prim[i]==0){
t=t*prim[i];
ex++;
r/=prim[i];
}
ndiv*= ex;
suma*=(t*putere(t,B)-1)/(prim[i]-1)%9901;
}
}
if(r!=1){
suma*=(r*r*putere(r,B-1)-1)/(r-1)%9901;
ndiv*=2;
}
g<<suma%9901<<"\n";
}
int main (){
f>>A>>B;
ciur();
determinare(A);
return 0;
}