Pagini recente » Cod sursa (job #3041029) | Cod sursa (job #2201585) | Profil 1475369147896537415369 | Cod sursa (job #2684189) | Cod sursa (job #1913898)
#include <cstdio>
#include <vector>
#define MOD 9901
using namespace std;
vector<pair<int, int> > p_fact;
int rid_putere(int A, int n)
{
long long p = 1;
while(n)
{
if(n & 1)
{
n--;
p = (p * A) % MOD;
}
A = (A * A) % MOD;
n>>=1;
}
return p;
}
int main()
{
int np=0,A,B,i;
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%d%d",&A,&B);
//prime factorization A
if(A%2==0)
{
np++;
p_fact.push_back(make_pair(2,1));
A=A/2;
while(A%2==0)
{
p_fact[0].second++;
A=A/2;
}
}
for(i=3;i*i<=A;i+=2)
{
if(A%i==0)
{
np++;
p_fact.push_back(make_pair(i,1));
A=A/i;
while(A%i==0)
{
p_fact[np-1].second++;
A=A/i;
}
}
}
if(A>1)
{
np++;
p_fact.push_back(make_pair(A,1));
}
//
long long m,sol = 1;
for(i=0;i<np;i++)
{
m = p_fact[i].second*B;
sol = (sol * rid_putere(p_fact[i].first,m+1) - 1) % MOD;
sol = (sol * rid_putere(p_fact[i].first - 1, MOD - 2) ) % MOD;
}
printf("%ld",sol);
}