Pagini recente » Rating Daria Diaconu (dariadiaconu76) | Cod sursa (job #984864) | Statistici Dobrmir Cezar Andrei (Dobromir_Cezar_Andrei_325CA) | Cod sursa (job #180847) | Cod sursa (job #2701469)
#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<=1000000;i++)
{
if(!prim[i])
{
for(long long j=i*i;j<=1000000;j+=i)
{
prim[j] = true;
}
}
}
for(long long i=2;i<=1000000;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];
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;
}