Pagini recente » Cod sursa (job #941608) | Cod sursa (job #3139942) | Cod sursa (job #1061337) | Cod sursa (job #1796099) | Cod sursa (job #2565348)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "sumdiv.in" );
ofstream fout( "sumdiv.out" );
const int MOD = 9901;
int A, B;
vector <int> primes;
int Exp( long long v, long long p ) {
if( p == 1 ) return v % MOD;
int ans = Exp( v, p / 2 );
ans = ( 1LL * ans * ans ) % MOD;
if( p % 2 ) ans = ( 1LL * ans * v ) % MOD;
return ans;
}
int InvMod( int val ) {
return Exp( val, MOD - 2 );
}
void Do()
{
long long sum = 1;
for( int i = 2; i * i <= A; ++i ) {
long long ex = 0;
while( A % i == 0 ) {
++ex;
A /= i;
}
if( ex == 0 ) continue;
ex *= B;
long long prod = Exp( i, ex + 1 ) - 1;
if( prod < 0 ) prod += MOD;
prod = ( 1LL * prod * InvMod( i - 1 ) ) % MOD;
sum = ( 1LL * sum * prod ) % MOD;
}
if( A > 1 ) {
long long prod = Exp( A, B + 1 ) - 1;
if( prod < 0 ) prod += MOD;
prod = ( 1LL * prod * InvMod( A - 1 ) ) % MOD;
sum = ( 1LL * sum * prod ) % MOD;
}
fout << sum << '\n';
}
int main()
{
fin >> A >> B;
Do();
fin.close();
fout.close();
return 0;
}