Pagini recente » Cod sursa (job #2532190) | Cod sursa (job #2531278) | Cod sursa (job #2166958) | Cod sursa (job #3167877) | Cod sursa (job #2663827)
#include <fstream>
#include <cstdio>
using namespace std;
ifstream cin ( "sumdiv.in" );
ofstream cout ( "sumdiv.out" );
#define MOD 9901
int main()
{
unsigned long long a, b, d, ans, p, n, ans1, ca;
cin >> a >> b;
d = 2;
ans = 1;
ca = a;
while ( d * d <= a ) {
p = 0;
while ( a % d == 0 ) {
p++;
a /= d;
}
if ( p > 0 ) {
if( d % MOD == 1 )
ans = ans * (p * b + 1) % MOD;
else {
n = p * b + 1;
p = d;
ans1 = 1;
while ( n > 0 ) {
if ( n % 2 == 1 )
ans1 = ans1 * ( p % MOD ) % MOD;
p = ( p % MOD ) * ( p % MOD ) % MOD;
n /= 2;
}
if ( ans1 > 1 )
ans = ans * ( ans1 - 1 ) % MOD;
else
ans = ans * 9900 % MOD;
n = MOD - 2;
p = d - 1;
while ( n > 0 ) {
if ( n % 2 == 1 )
ans = ans * ( p % MOD ) % MOD;
p = ( p % MOD ) * ( p % MOD ) % MOD;
n /= 2;
}
}
}
d++;
}
if ( a > 1 ) {
if( a % MOD == 1 )
ans = ans * (b + 1) % MOD;
else {
n = b + 1;
p = a;
ans1 = 1;
while ( n > 0 ) {
if ( n % 2 == 1 )
ans1 = ans1 * ( p % MOD ) % MOD;
p = ( p % MOD ) * ( p % MOD ) % MOD;
n /= 2;
}
if ( ans1 > 1 )
ans = ans * ( ans1 - 1 ) % MOD;
else
ans = ans * 9900 % MOD;
n = MOD - 2;
p = a - 1;
while ( n > 0 ) {
if ( n % 2 == 1 )
ans = ans * ( p % MOD ) % MOD;
p = ( p % MOD ) * ( p % MOD ) % MOD;
n /= 2;
}
}
}
if ( ca > 0 )
cout << ans;
else
cout << "0";
return 0;
}