Pagini recente » Cod sursa (job #1730078) | Cod sursa (job #2971693) | Cod sursa (job #2305085) | Cod sursa (job #3280978) | Cod sursa (job #2313179)
#include <fstream>
#include <vector>
#define MOD 9901
using namespace std;
ifstream fi("sumdiv.in");
ofstream fo("sumdiv.out");
int A,B;
vector<pair<int,int> > f;
int rez=1;
int ridlog(int x,int p)
{
x=(x+MOD)%MOD;
int rez=1;
while(p)
{
if(p&1)
rez=(1LL*rez*x)%MOD;
x=(1LL*x*x)%MOD,p>>=1;
}
return rez;
}
int part(int x,int y)
{
if(x==1)return (y+1)%MOD;
int a=(ridlog(x, y+1)-1+MOD)%MOD;
int b=ridlog(x-1,MOD-2);
return (a*b)%MOD;
}
int main()
{
fi>>A>>B;
for(int i=2;i*i<=A;i++)
if(A%i==0)
{
int exp=0;
while(A%i==0)
A/=i,exp++;
f.push_back(make_pair(i%MOD,exp*B));
}
if(A>1)
f.push_back(make_pair(A%MOD,B));
for(auto it:f)
rez=(rez*part(it.first,it.second))%MOD;
fo<<rez;
fi.close();
fo.close();
return 0;
}