Pagini recente » Cod sursa (job #2019306) | Istoria paginii runda/preoni_nicu3 | Cod sursa (job #1799146) | Cod sursa (job #984768) | Cod sursa (job #640925)
Cod sursa(job #640925)
#include <fstream>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const int MOD = 9901;
int A , B , sd ;
int lgpow(int x,int y)
{
int ans = 1;
for(;y;y>>=1)
{
if(y & 1)
ans = (ans*x)%MOD , y--;
x = (x*x)%MOD;
}
return ans;
}
void solve(int nr)
{
int p = 0 , nr1 , nr2;
sd = 1;
for(int d=2;d*d<=nr;d++)
if(nr%d==0)
{
while(nr%d==0) nr/=d , p++;
p*=B;
if(nr%MOD==1)
sd = sd*((nr+1)%MOD)%MOD;
else
{
nr1 = (lgpow(d,p+1)-1)%MOD;
nr2 = lgpow(d-1,MOD-2)%MOD;
sd = ((sd * nr1) *nr2)%MOD;
}
}
if(nr>1)
{
p = B;
if(nr%MOD==1)
sd = sd*((nr+1)%MOD)%MOD;
else
{
nr1 = (lgpow(nr,p+1)-1)%MOD;
nr2 = lgpow(nr-1,MOD-2)%MOD;
sd = ((sd * nr1)%MOD *nr2)%MOD;
}
}
}
int main()
{
fin>>A>>B;
solve(A);
fout<<sd<<"\n";
return 0;
}