Pagini recente » Cod sursa (job #1584021) | Cod sursa (job #3209979) | Cod sursa (job #791243) | Cod sursa (job #2889247) | Cod sursa (job #2864083)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("sumdiv.in");
ofstream fout ("sumdiv.out");
const int MOD = 9901;
int a, b, sol;
int dcnt;
pair <int, int> expo[15];
void divd(int d){
int e = 0;
while(a % d == 0){
e++;
a /= d;
}
if(e != 0)
expo[++dcnt] = {d, e};
}
int lgput(int a, int b){
int answer = 1;
while(b != 0){
if(b&1)
answer = (long long)answer * a % MOD;
a = (long long)a * a % MOD;
b >>= 1;
}
return answer;
}
int main (){
ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin>>a>>b;
divd(2);
divd(3);
for(int i=5; i<=a/i; i+=6)
divd(i), divd(i+2);
if(a > 1)
divd(a);
for(int i=1; i<=dcnt; i++)
expo[i].second *= b;
sol = 1;
for(int i=1; i<=dcnt; i++)
sol = sol * ((lgput(expo[i].first, expo[i].second+1) - 1 + MOD) % MOD) % MOD * ((expo[i].first - 1 + MOD) % MOD) % MOD;
fout<<sol;
return 0;
}