Pagini recente » Istoria paginii utilizator/patricia | Cod sursa (job #1330763) | Cod sursa (job #574331) | Cod sursa (job #1554056) | Cod sursa (job #200967)
Cod sursa(job #200967)
#include <cstdio>
const int ND = 1000;
int a, b, nd, d[ND], e[ND];
int f ( int a, int b ) {
int r = 1;
for (int i = b; i; i /= 2, a = (a*a)%9901)
if (i % 2 == 1)
r = (r*a)%9901;
return r;
}
int main() {
freopen("sumdiv.in","rt",stdin);
freopen("sumdiv.out","wt",stdout);
scanf("%d %d",&a,&b);
int x = a;
for (int i = 2; i*i < x; ++i) {
if (x%i == 0) {
d[nd] = i;
for (e[nd]; x % i == 0; x /= i) ++e[nd];
e[nd] *= b;
++nd;
}
}
if (x > 1) d[nd] = x, e[nd++] = b;
int r = 1;
for (int i = 0; i < nd; ++i) {
if (d[i] % 9901 == 1) {
x = e[i]+1;
} else {
x = (f(d[i],e[i])*d[i]+9900)%9901;
x = (x*f(d[i]-1,9899))%9901;
}
r = (r*x)%9901;
}
printf("%d\n",r);
return 0;
}