Pagini recente » Cod sursa (job #1178639) | Cod sursa (job #73855) | Cod sursa (job #22352) | Cod sursa (job #1271835) | Cod sursa (job #2984628)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
const int MOD=9901;
bool ciur[5000001];
long long int prime[1000001],nrPrime=0;
long long lgPow(long long int x, long long int n)
{
long long val=1,a=x;
while(n>0)
if(n%2==0)
{
a=(a*a)%MOD;
n/=2;
}
else
{
val=(val*a)%MOD;
n--;
}
return val;
}
int main()
{
long long int i,j,nrTeste,a,b,nrDiv,sDiv;
ciur[1]=1;
for(i=2; i<=5000; i++)
if(ciur[i]==0)
{
nrPrime++;
prime[nrPrime]=i;
for(j=i*2; j<=2500000; j+=i)
ciur[j]=1;
}
for(i=5001; i<=2500000; i++)
if(ciur[i]==0)
{
nrPrime++;
prime[nrPrime]=i;
}
f>>a>>b;
nrDiv=1;
sDiv=1;
for(j=1; j<=nrPrime&&1LL*prime[j]*prime[j]<=a; j++)
if(a%prime[j]==0)
{
///if(i==6)
/// cout<<prime[j]<<' '<<n<<'\n';
long long int exponent=0;
while(a%prime[j]==0)
{
exponent++;
a/=prime[j];
}
exponent*=b;
sDiv=(sDiv*((lgPow(prime[j],exponent+1)%MOD-1)%MOD))%MOD;
sDiv=(sDiv*((lgPow(prime[j]-1,MOD-2))%MOD))%MOD;
}
if(a>1)
{
sDiv=(sDiv*((lgPow(a,b+1)%MOD-1)%MOD))%MOD;
}
g<<sDiv<<'\n';
}