Pagini recente » Cod sursa (job #2417591) | Cod sursa (job #1221958) | Cod sursa (job #708159) | Istoria paginii runda/trasharena_bitch/clasament | Cod sursa (job #1809051)
#include<fstream>
#define MOD 9901
#define DIM 8000
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int a, b, x[DIM], k, c;
int sol, invsmod;
char w[DIM + 5];
int lgput( int x, int p ){
int r = 1;
while( p != 0 ){
if( p % 2 == 1 ){
r = r * x % MOD;
}
x = x * x % MOD;
p /= 2;
}
return r % MOD;
}
int main(){
fin >> a >> b;
w[0] = w[1] = 1;
for( int i = 2; i <= DIM; i++ ){
if( w[i] == 0 ){
x[++k] = i;
for( int j = i + i; j <= DIM; j+= i ){
w[j] = 1;
}
}
}
c = a;
sol = 1;
for( int i = 1; i <= k && x[i] * x[i] <= a && c != 1; i++ ){
int e = 0;
while( c % x[i] == 0 ){
e++;
c /= x[i];
}
if( e != 0 ){
int r = ( lgput( x[i], e * b + 1 ) - 1 ) % MOD;
invsmod = lgput( x[i] - 1, MOD - 2 );
sol = sol * r % MOD * invsmod % MOD;
}
}
if( c != 1 ){
int r = ( lgput( c, b + 1 ) - 1 ) % MOD;
invsmod = lgput( c - 1, MOD - 2 );
sol = sol * r % MOD * invsmod % MOD;
}
while( sol < 0 ){
sol += MOD;
}
fout << sol << "\n";
return 0;
}