Pagini recente » Cod sursa (job #2796366) | Cod sursa (job #2626328) | Cod sursa (job #1505968) | Cod sursa (job #1817317) | Cod sursa (job #1944170)
#include <fstream>
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
int const MOD = 9901;
int a,b;
long long rez = 1;
int putere(int no, int power){
int r = 1;
for(int i = 0; (1<<i) <= power; i++){
if(((1<<i) & power) > 0)
r = (r * no) % MOD;
no = (no * no) % MOD;
}
return r;
}
void inv_mod(long long &x, long long &y, int a, int b){
if(!b){
x=1;
y=0;
}
else{
inv_mod(x, y, b, a%b);
swap(x,y);
y -= x * (a/b);
}
}
int turn_to_inv(int x){
long long inv = 0, ins;
inv_mod(inv, ins, x, MOD);
if(inv <= 0){
inv = MOD + inv % MOD;
}
return inv;
}
int main()
{
in >> a >> b;
in.close();
for(int i=2; i*i <= a; i++){
if(!(a%i)){
int p=0;
while(!(a%i)){
p++;
a/=i;
}
rez = (((rez * putere(i, b*p + 1) - 1) % MOD) *
(turn_to_inv(i-1))) % MOD;
}
}
if(a>1){
rez = (((rez * putere(a, b+1) -1) % MOD) *
(turn_to_inv(a-1))) % MOD;
}
out << rez;
out.close();
return 0;
}