Pagini recente » Cod sursa (job #1924237) | Cod sursa (job #321263) | Cod sursa (job #1022375) | Cod sursa (job #2290694) | Cod sursa (job #1687504)
#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;
unsigned long long x;
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;
s%=9901;
contor=0;
}
for(d=3;d*d<=a;d+=2)
{
if(a%d==0)
{
x=d%9901;
if(x!=1)
{
a/=d;
contor++;
while(a%d==0)
{
a/=d;
contor++;
}
sus=ridicare(b*contor+1,x)-1;
jos=ridicare(9899,x-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;
//fout<<endl<<ridicare(9899,11);
return 0;
}