Pagini recente » Cod sursa (job #1540399) | Cod sursa (job #823841) | Cod sursa (job #2896612) | Cod sursa (job #2796486) | Cod sursa (job #2701470)
#include<bits/stdc++.h>
using namespace std;
vector<long long> prime;
vector<bool> prim(1000001);
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
#define MOD 9901
void ciur()
{
for(long long i=2;i*i<=100000;i++)
{
if(!prim[i])
{
for(long long j=i*i;j<=100000;j+=i)
{
prim[j] = true;
}
}
}
for(long long i=2;i<=100000;i++)
{
if(!prim[i])
prime.push_back(i);
}
}
long long power(long long a,long long n)
{
long long res = 1;
while(n)
{
if(n%2)
{
res = ((res % MOD) * (a % MOD)) % MOD;
}
a = ((a % MOD) * (a % MOD)) % MOD;
n /= 2;
}
return res;
}
int main()
{
ciur();
long long a,b;
fin>>a>>b;
long long n = power(a,b);
long long k = 0;
long long suma = 1;
while(n > 1)
{
long long d = prime[k];
if(d * d > n)
d = n;
long long p = d;
if(n % d == 0)
{
while(n % d == 0)
{
n /= d;
p = ( (p % MOD) * (d % MOD)) % MOD;
}
long long numarator = ((p - 1 ) % MOD + MOD ) % MOD;
long long numitor = power(d-1,MOD-2);
long long fractie = ((numarator % MOD) * (numitor % MOD) ) % MOD;
suma = ((suma % MOD) * (fractie % MOD )) % MOD;
}
}
fout<<suma;
return 0;
}