Pagini recente » Cod sursa (job #380430) | Cod sursa (job #1075054) | Cod sursa (job #2628957) | Cod sursa (job #3154957) | Cod sursa (job #184651)
Cod sursa(job #184651)
#include <cstdio>
#define Pmax 100
//#define modulo 9901
int A,B,i,total,modulo;
int P[Pmax],pow[Pmax],nr;
long long power(long long baza,long long pow)
{
long long aux;
if (pow==1) return baza % modulo;
if (pow & 1) return (power(baza, pow-1) * baza) % modulo;
else
{
aux=power(baza, pow >> 1);
return (aux*aux) % modulo;
}
}
void solve()
{
int aux,inv;
for (i=1; i<=nr; ++i)
{
modulo=9901;
inv=power((P[i]-1) % modulo, modulo-2);
if (inv==0) { modulo=(P[i]-1)*9901; inv=1; }
aux=power(P[i] % modulo, pow[i]*B+1)-1;
if (aux < 0) aux+=modulo;
if (modulo>9901) { aux/=(P[i]-1);modulo=9901; }
total=(((total * aux) % modulo) * inv) % modulo;
}
}
void factori()
{
for (i = 2; i*i <= A; ++i)
if (A % i == 0)
{
P[++nr]=i;
while (A % i == 0)
{
A /= i;
++pow[nr];
}
}
if (A > 1)
{
P[++nr] = A;
pow[nr]=1;
}
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%d %d",&A,&B);
total=1;
factori();
solve();
printf("%d",total);
fclose(stdout);
return 0;
}