Pagini recente » Cod sursa (job #721181) | Cod sursa (job #295183) | Cod sursa (job #2511533) | Cod sursa (job #1811924) | Cod sursa (job #1687406)
#include <fstream>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int a,b;
unsigned long long s=1,rezultat;
void citire()
{
fin>>a>>b;
}
unsigned long long ridicare(int putere,unsigned long long numar)
{
rezultat=1;
while(putere)
{
if(putere%2)
{
rezultat*=numar;
rezultat%=9901;
}
numar*=numar;
numar%=9901;
putere/=2;
}
return rezultat;
}
void gasire_divprim()
{
int d=2,contor=0;
unsigned long long sus,jos;
if(a%2==0)
{
a/=2;
contor++;
while(a%2==0)
{
a/=2;
contor++;
}
sus=ridicare(b*contor+1,2)-1;
jos=1;
s*=sus*jos;
contor=0;
}
for(d=3;d*d<=a;d+=2)
{
if(a%d==0)
{
d%=9901;
if(d!=1)
{
a/=d;
contor++;
while(a%d==0)
{
a/=d;
contor++;
}
sus=ridicare(b*contor+1,d)-1;
jos=ridicare(9899,d-1);
s*=sus*jos;
s%=9901;
}
}
}
if(a!=1)
{
a%=9901;
if(a!=1)
{
sus=ridicare(b+1,a)-1;
jos=ridicare(9899,a-1);
s*=sus*jos;
s%=9901;
}
}
}
int main()
{
citire();
if(b==0)
s=1;
else
gasire_divprim();
fout<<s;
return 0;
}