Pagini recente » Cod sursa (job #253429) | Cod sursa (job #1661882) | Cod sursa (job #1163508) | Cod sursa (job #1224150) | Cod sursa (job #1070936)
#include <fstream>
#include <cstring>
#define mod 9901
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
long long a,b,t,p[10001];
long long sum = 1;
long long lgpow (long long a, long long b)
{
if (b==0)
return 1;
long long x = lgpow(a,b/2);
if (b%2)
return x*x%mod*a%mod;
return x*x%mod;
}
void sieve (int n)
{
bool comp[10001];
memset (comp,0,sizeof(comp));
p[++t] = 2;
for (int i=3; i<=n; i+=2)
{
if (!comp[i])
{
p[++t] = i;
for (int j=i*i; j<=n; j+=i)
{
comp[j] = 1;
}
}
}
}
int main()
{
fin>>a>>b;
sieve (10000);
for (int i=1; i<=t && p[i]*p[i] <= a; ++i)
{
if (a % p[i] != 0)
continue;
long long po=0;
while (a%p[i]==0)
{
a /= p[i];
++po;
}
long long f1 = (lgpow (1LL*p[i],1LL*po*b+1)-1)%mod;
if (f1 < 0) f1 += mod;
long long f2 = lgpow (1LL*p[i]-1,1LL*mod-2);
sum = sum*f1%mod*f2%mod;
}
if (a!=1)
{
long long f1 = (lgpow (1LL*a,1LL*b+1)-1)%mod;
if (f1 < 0) f1 += mod;
long long f2 = lgpow (1LL*a-1,1LL*mod-2);
sum = sum*f1%mod*f2%mod;
}
fout<<sum;
}