Pagini recente » Cod sursa (job #2669209) | Cod sursa (job #714786) | Cod sursa (job #2746678) | Cod sursa (job #3145291) | Cod sursa (job #1901181)
#include <fstream>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
typedef unsigned long long ull;
ull a,b;
ull put(ull b,ull e){
if(e==1){return b;}
if(e==0){return 1;}
if(e%2==0){ull putere=put(b,e/2);return putere*putere;}
else {ull putere=put(b,e-1);return putere*b;}
}
ull putmod(ull b,ull e){
if(e==1){return b;}
if(e==0){return 1;}
if(e%2==0){ull putere=put(b,e/2)%9901;return putere*putere;}
else {ull putere=put(b,e-1)%9901;return putere*b;}
}
ull sumdifput1(ull n){
int d=3,sum=0,e=0;
while(n%2==0){e++;n/=2;}e*=b;
sum+=(put(2,e+1)-1)%9901;/// ((q^(n+1))-1)/(q-1)
while(n>1){
if(n%d==0){e=0;
while(n%d==0){e++;n/=d;}e*=b;
sum*=((put(d,e+1)-1)/(d-1))%9901;
sum%=9901;
}
else {
if(d*d>n){sum*=((put(n,2*b)-1)/(n-1))%9901;sum%=9901;n=1;}
else {d++;}
}
}
return sum;
}
int main(){
fin>>a>>b;
if(a==1){fout<<"1\n";return 0;}
if(b==0){fout<<"1\n";return 0;}
if(a==0){fout<<"0\n";return 0;}
fout<<sumdifput1(a);
return 0;
}