Pagini recente » Cod sursa (job #736353) | Cod sursa (job #588859) | Cod sursa (job #1818025) | Cod sursa (job #2838071) | Cod sursa (job #1981481)
#include <fstream>
//#include <iostream>
#include <cmath>
#define M 9901
using namespace std;
int inv(int x)
{
int res=1;
for (int i=0;i<9900;i++)
{
res=(res*x)%M;
}
return res;
}
int pow(int base, int exp)
{
if (exp==0) return 1;
else
{
int x=pow(base, exp/2);
if (exp%2) return (x*x*base)%M;
else return (x*x)%M;
}
}
int main()
{
ifstream fin("sumdiv.in");
int a, b;
fin>>a>>b;
int fact[35]={0}, f=0;
int kit[35]={0}, k=0;
int lim=sqrt(a);
if (a%2==0)
{
fact[f++]=2;
while (a%2==0)
{
kit[k]+=b;
a/=2;
}
k++;
}
for (int i=3;i<=lim;i+=2)
{
if (a%i==0)
{
fact[f++]=i%M;
while (a%i==0)
{
kit[k]+=b;
a/=i;
}
k++;
}
}
if (a>1)
{
fact[f++]=a;
kit[k++]=b;
}
int s=1;
for (int i=0;i<f;i++)
{
s=(s*( (pow(fact[i], kit[i]+1)-1)*inv(fact[i]-1) ))%M;
}
ofstream fout("sumdiv.out");
fout<<s;
}