Pagini recente » Cod sursa (job #1373740) | Cod sursa (job #2282945) | Cod sursa (job #2002541) | Statistici pirvu mic nicusor catalin (Caracatita_09) | Cod sursa (job #2756472)
#include <iostream>
#include <fstream>
using namespace std;
const int MOD = 9901;
int lgput( int a, int b ) {
int p = 1;
while ( b > 0 ) {
if ( b % 2 == 1 ) {
p = (long long)p * a % MOD;
}
a = (long long)a * a % MOD;
b /= 2;
}
return p;
}
int ans( int a, int b ) {
int p, d, s = 1;
d = 2;
while ( d * d <= a ) {
p = 0;
while ( a % d == 0 ) {
a /= d;
p ++;
}
p *= b;
if ( p > 0 )
s = (long long)s * ( lgput( d, p + 1 ) - 1 + MOD ) % MOD * lgput( d - 1, MOD - 2 ) % MOD;
d += d % 2 + 1;
}
if ( a > 1 )
s = (long long)s * ( lgput( a % MOD, b + 1 ) - 1 + MOD ) % MOD * lgput( (a - 1) % MOD, MOD - 2 ) % MOD;
return s;
}
int main() {
ifstream fin( "sumdiv.in" );
ofstream fout( "sumdiv.out" );
int a, b;
fin >> a >> b;
fout << ans( a, b );
return 0;
}