Pagini recente » Cod sursa (job #301072) | Cod sursa (job #2144859) | Cod sursa (job #865391) | Cod sursa (job #2788631) | Cod sursa (job #2662787)
#include <fstream>
using namespace std;
ifstream fin( "sumdiv.in" );
ofstream fout( "sumdiv.out" );
const int MOD = 9901;
int lgput( int x, int y ){
int p = 1;
while( y ){
if( y & 1 )
p = (1LL * p * x) % MOD;
x = (1LL * x * x) % MOD;
y >>= 1;
}
return p;
}
int main() {
int n, k, d, e, sol;
fin >> n >> k;
d = 2;
sol = 1;
if( n == 0 )
sol = 0;
while( d * d <= n ){
e = 0;
while( !(n % d) ){
++e;
n /= d;
}
if( e > 0 ){
if( d % MOD == 1 )
sol = (1LL * sol * (e * k + 1)) % MOD;
else{
sol = (1LL * sol * ((lgput((d % MOD), (e * k) + 1) - 1 + MOD) % MOD)) % MOD;
sol = (1LL * sol * lgput((d - 1) % MOD, MOD - 2)) % MOD;
}
}
++d;
}
if( n > 1 ){
if( n % MOD == 1 )
sol = (1LL * sol * (k + 1)) % MOD;
else{
sol = (1LL * sol * ((lgput((n % MOD), k + 1) - 1 + MOD) % MOD)) % MOD;
sol = (1LL * sol * lgput((n - 1) % MOD, MOD - 2)) % MOD;
}
}
fout << sol;
return 0;
}