Pagini recente » Cod sursa (job #477060) | Cod sursa (job #2703973) | Cod sursa (job #2912107) | Cod sursa (job #1371839) | Cod sursa (job #1901943)
#include <cstdio>
#include <cmath>
#define NMax 1000000
using namespace std;
long long a, n, p, i, j, e, m, s=1, q[NMax+5], k;
bool viz[NMax+5];
int main (){
freopen("sumdiv.in", "r", stdin);
freopen("sumdiv.out", "w", stdout);
scanf("%lld%lld", &a, &n);
p=1;
while (n){
if (n%2){
p=(p*a)%9901;
--n;
}
else {
a=(a*a)%9901;
n/=2;
}
}
// printf("%lld\n", p);
k=0;
for (i=2; i<=NMax; i++){
if (viz[i]==0){
q[++k]=i;
for (j=2; j*i<=NMax; j++)
viz[i*j]=1;
}
}
i=1;
// printf("%d\n", k);
while (q[i]*q[i]<=p && i<=k){
e=0;
m=q[i];
while (p%q[i]==0){
p/=q[i];
e++;
m*=q[i];
}
if (e) s=(s*(m-1)/(q[i]-1))%9901;
++i;
}
if (p>1) s=(s*((p*p-1)/(p-1)))%9901;
printf("%lld", s);
}