Pagini recente » Cod sursa (job #2989840) | Cod sursa (job #1582913) | Cod sursa (job #3142942) | Cod sursa (job #1153646) | Cod sursa (job #2664192)
#include <fstream>
using namespace std;
const int MOD = 9901;
int lgput( int a, int n ) {
int p = 1;
while (n > 0) {
if (n % 2 == 1)
p = ( ( long long ) p * a) % MOD;
a = ( long long ) a * a % MOD;
n >>= 1;
}
return p;
}
ifstream fin( "sumdiv.in" );
ofstream fout( "sumdiv.out" );
int main() {
int n, k, d, sum, e;
fin >> n >> k;
sum = (n > 0);
for ( d = 2; d * d <= n; d += 1 + d % 2 )
if ( n % d == 0 ) {
e = 0;
do {
e++;
n /= d;
} while ( n % d == 0 );
if ( e > 0 )
e *= k;
if ( d % MOD == 1)
sum = (long long) sum * (e + 1) % MOD;
else {
sum = ( (long long) sum * (lgput( d % MOD, e + 1 ) + MOD - 1 ) ) % MOD;
sum = (long long) sum * lgput( (d % MOD + MOD - 1) % MOD , MOD - 2 ) % MOD;
}
}
if ( n > 1 ) {
if ( n % MOD == 1)
sum = (long long) sum * (k + 1) % MOD;
else {
sum = ( (long long) sum * lgput( n, k + 1 ) + MOD - 1 ) % MOD;
sum = (long long) sum * lgput( (n + MOD - 1) % MOD , MOD - 2 ) % MOD;
}
}
fout << sum;
return 0;
}