Pagini recente » Cod sursa (job #2048406) | Cod sursa (job #2726502) | Cod sursa (job #2869568) | Cod sursa (job #2991028) | Cod sursa (job #1913749)
#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 = n / 2;
}
return p;
}
int main()
{
long long np=0,A,m,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;A!=1;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;
}
}
}
//
long long 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) / (p_fact[i].first - 1)) % MOD;
}
printf("%d",sol);
}