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