Pagini recente » Cod sursa (job #2438844) | Cod sursa (job #302272) | Cod sursa (job #2103446) | Cod sursa (job #2459946) | Cod sursa (job #931145)
Cod sursa(job #931145)
#include <fstream>
#include <bitset>
using namespace std;
const long long MOD = 9901;
long long N, M;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long pow( long long a, long long p ){
long long res = 1;
for ( long long j = 0; ( 1 << j ) <= p; ++j ){
if ( ( 1 << j ) & p )
res = ( res * a ) % MOD;
a = ( a * a ) % MOD;
}
return res;
}
void sol()
{
f >> N;
f >> M;
long long sd = 1, v = 0;
for(long long i = 2; i * i <= N && N > 1; ++i)
{
if(N % i) continue;
v = 0;
while(N % i == 0)
{
N /= i;
++v;
}
if(i % MOD == 1)
sd *= 1LL * (v + 1) % MOD;
else
{
long long p1 = ( pow ( i, v * M + 1 ) + MOD - 1 ) % MOD;
long 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();
}