Pagini recente » Cod sursa (job #1853295) | Cod sursa (job #2081921) | Cod sursa (job #2870920) | Cod sursa (job #593060) | Cod sursa (job #756776)
Cod sursa(job #756776)
#include <cstdio>
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctype.h>
#include <cstring>
#include <ctime>
using namespace std;
#define MOD 9901
int A, B, d, S;
int put(int a, int p) {
int r = 1;
while(p) {
if(p & 1) r = ((long long)r * a) % MOD;
a = ((long long)a * a) % MOD;
p /= 2;
}
return r;
}
int main() {
freopen("sumdiv.in", "r", stdin);
freopen("sumdiv.out","w", stdout);
scanf("%d %d", &A, &B);
S = 1;
for(d = 2; d * d <= A; d++)
if(A % d == 0) {
int p = 0;
while(A % d == 0) {
A /= d;
p++;
}
if(d % MOD == 1)
S = ((long long)S * ((p * B) % MOD + 1)) % MOD;
int n1 = (put(d, p * B + 1) - 1 + MOD) % MOD;
int n2 = put(d - 1, MOD - 2);
S = ((long long)S * n1) % MOD;
S = ((long long)S * n2) % MOD;
}
if(A > 1) {
if(A % MOD == 1)
S = ((long long)S * (B % MOD + 1)) % MOD;
else {
int n1 = (put(A, B + 1) - 1 + MOD) % MOD;
int n2 = put(A - 1, MOD - 2);
S = ((long long)S * n1) % MOD;
S = ((long long)S * n2) % MOD;
}
}
printf("%d", S);
return 0;
}