Pagini recente » Cod sursa (job #1729183) | Cod sursa (job #2023468) | Cod sursa (job #1326731) | Cod sursa (job #1200031) | Cod sursa (job #1811056)
#include<fstream>
#include<cmath>
#define mod 9901
using namespace std;
int a, b, i, e, sum, r;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int mult(int x, int e){
if(e == 0){
return 1;
}
else{
int a = mult(x, e / 2);
if(e % 2 == 0){
return a * a % mod;
}
else{
return a * a % mod * x % mod;
}
}
}
void invmod(int a, int b, int &x, int &y){
if(b == 0){
x = 1;
y = 0;
}
else{
int x2, y2;
invmod(b, a % b, x2, y2);
x = y2;
y = x2 - a / b * y2;
}
}
int calc(int a, int e){
int pt, x, y;
pt = mult(a, e * b + 1) - 1;
if(pt < 0){
pt += mod;
}
invmod(a - 1, mod, x, y);
x %= mod;
if(x < 0){
x += mod;
}
int sol = pt * x % mod;
return sol;
}
int main(){
fin>> a >> b;
r = sqrt(a * 1.0);
sum = 1;
for(i = 2; i <= r; i++){
e = 0;
while(a % i == 0){
e++;
a /= i;
}
if(e != 0){
sum = sum * calc(i, e) % mod;
}
}
if(a != 1){
if(a % mod == 1){
sum = sum * (b + 1) % mod;
}
else{
sum = sum * calc(a, 1) % mod;
}
}
fout<< sum <<"\n";
return 0;
}