Pagini recente » Cod sursa (job #2625510) | Cod sursa (job #2502816) | Cod sursa (job #3163245) | Cod sursa (job #3142302) | Cod sursa (job #1429290)
#include <cstdio>
#include <fstream>
#include <cstdlib>
#include <utility>
#include <algorithm>
#include <bitset>
#include <vector>
#include <map>
#include <queue>
#include <string>
#include <cstring>
#define ll long long
#define rep(i, a, b) for (int i = (a) ; i <= (b) ; ++i)
#define mask(x) ((x) ^ ((x) >> 1 ) )
#define mp make_pair
#define pii pair <int, int>
#define SORT(x) sort ((x).begin(), (x).end() )
using namespace std;
static const int modus = 9901;
inline int bitput (int a, int b) {
ll rez = 1;
for (; b ; b >>= 1 ) {
if (b & 1 ) rez = (rez * a ) % modus;
a = (1LL * a * a ) % modus;
}
return rez;
}
inline int ssd (int X, int Y) {
return ( ( (bitput (X, Y + 1) - 1 + modus ) % modus ) * bitput((X-1)%modus, modus-2)) % modus;//I love bad bitches, thats my fucking problem
}
int main() {
ifstream cin ("sumdiv.in");
ofstream cout ("sumdiv.out");
int X, Y;
ll mask = 1;
cin >> X >> Y ;
for (auto d = 2; d * d <= X; ++ d ) {
if (X % d) continue;
int p = 0;
while (X % d == 0) ++p, X /= d;
p *= Y;
if (d % modus == 1)
mask = (mask * ((p + 1) % modus) ) % modus;
else
mask = (mask * ssd(d, p) ) % modus;
}
if (X > 1) {
if (X % modus == 1) mask = (mask * ( ( Y + 1) % modus) ) % modus;
else mask = (mask * ssd(X, Y + 1)) % modus;
}
cout << mask;
return 0;
}