Pagini recente » Cod sursa (job #1712854) | Cod sursa (job #977402) | Cod sursa (job #2249537) | Cod sursa (job #1647176) | Cod sursa (job #1944838)
#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,z = no;
while(power){
if(power % 2 == 1){
r *= z;
r %= MOD;
}
power/=2;
z *= z;
z %= 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;
}