Pagini recente » Borderou de evaluare (job #202279) | Cod sursa (job #365654) | Cod sursa (job #1984279) | Cod sursa (job #2999907) | Cod sursa (job #687248)
Cod sursa(job #687248)
#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=0;
while(r%prim[i]==0){
ex++;
r/=prim[i];
}
suma*=(putere(prim[i],B*ex+1)-1)/(prim[i]-1)%9901;
}
}
if(r!=1){
suma*=(putere(r,B+1)-1)/(r-1)%9901;
}
g<<suma%9901<<"\n";
}
int main (){
f>>A>>B;
ciur();
determinare(A);
return 0;
}