#include<bits/stdc++.h> usingnamespace std; typedeflonglong ll; constint LEN = 1e8 + 50, MOD = 9901; // 记录有多少个质因子,对应质因子的幂次 ll tot, pri[LEN], cnt[LEN];
//快速幂 ll ksm(ll a, ll b, ll mod){ ll ans = 1; while (b) { if (b & 1) ans = (ans * a) % mod; a = a * a % mod; b >>= 1; } return ans; }
//费马小定理求逆元 ll inv(ll a, ll mod){ returnksm(a, mod - 2, mod); }
//算术基本定理拆分质因子 voiddecompose(ll a, ll b, ll mod){ for (ll i = 2; i <= a / i; ++i) { if (a % i) continue; pri[++tot] = i; while (a % i == 0) a /= i, ++cnt[i]; } if (a > 1) pri[++tot] = a, ++cnt[a]; for (int i = 1; i <= tot; ++i) { cnt[pri[i]] *= b; } }
intmain(){ ll a, b; cin >> a >> b; decompose(a, b, MOD); ll ans = 1; for (int i = 1; i <= tot; ++i) { ll p = pri[i]; //此时费马小定理不可用 if ((p - 1) % MOD == 0) { ans = (ans * (cnt[p] + 1)) % MOD; } else { ans = (ans * (inv(p - 1, MOD) * (ksm(p, cnt[p] + 1, MOD) - 1 + MOD) % MOD) % MOD) % MOD; // 算术基本定理求解约数和 } } cout << ans; return0; }