Pagini recente » Cod sursa (job #2355109) | Cod sursa (job #1626265) | Cod sursa (job #1242382) | Cod sursa (job #1113550) | Cod sursa (job #1254906)
#include <iostream>
#include <fstream>
#define prim 9901LL
#define LL long long int
using namespace std;
LL A,B;
LL fpow(LL nr, LL p){
LL res=1,i;
for (i=1; i<=p; i<<=1){
if (p&i)
res=(res*nr)%prim;
nr=(nr*nr)%prim;
}
return res;
}
LL inv(LL nr){
return fpow(nr,prim-2);
}
LL get_sum(){
LL i,cnt,res=1;
for (i=2; i*i<=A; i++)
if (A%i==0){
cnt=0;
while(A%i==0)
cnt++,A/=i;
res=(((res*(fpow(i,cnt*B+1)-1+prim))%prim)*inv(i-1))%prim;
}
if (A>1)
if (A%prim==1)
res=(res*(B+1))%prim;
else
res=(((res*(fpow(A,B+1)-1+prim))%prim)*inv(A-1))%prim;
//if (inv(A-1)==0) cout << A;
return res;
}
int main(){
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
in >> A >> B;
out << get_sum();
return 0;
}