Pagini recente » Cod sursa (job #2150906) | Cod sursa (job #3248002) | Cod sursa (job #1084855) | Cod sursa (job #1830499) | Cod sursa (job #931137)
Cod sursa(job #931137)
#include <fstream>
#include <bitset>
using namespace std;
const long long MOD = 9901;
long long N, M;
long long T, K;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long pow(long long x, long long p)
{
long long rez = 1;
x %= MOD;
for(;p;p>>=1)
{
if(p&1)
{
rez *= x;
rez %= MOD;
}
x *= x;
x %= MOD;
}
return rez;
}
void sol()
{
f >> N;
f >> M;
long long sd = 1;
for(long long i = 2; i * i <= N && N > 1; ++i)
{
if(N % i) continue;
long long p = 0;
while(N % i == 0)
{
N /= i;
++p;
}
if(i % MOD == 1)
sd *= 1LL * (p + 1) % MOD;
else
{
long p1 = (pow(i, p+1) - 1) % MOD;
long p2 = pow(i-1, MOD-2) % MOD;
sd *= 1LL * p1 * p2;
sd *= MOD;
}
}
if ( M > 1 ){
if ( N % MOD == 1 )
sd = ( sd * 1LL * ( M % MOD + 1 ) ) % MOD;
else{
long long p1 = ( pow ( N, M + 1) + MOD - 1 ) % MOD;
long long p2 = pow ( N - 1, MOD - 2 ) % MOD;
sd *= 1LL * p1 * p2;
sd %= MOD;
}
}
if ( N == 0 )
g << 0 << "\n";
else
g << sd << "\n";
}
int main()
{
sol();
}