/* A = p1^k1 * p2^k2 * ... * pn^kn 所有的约数的个数: (k1 + 1) * (k2 + 1) * ... * (kn + 1) 所有的约数之和: (p1^0 + p1^1 + ... + p1^k1) * (p2^0 + p2^1 + ... + p2^k2) * ... * (pn^0 + pn^1 + ... + pn^kn) */ /* sum(p, k) = p^0 + p^1 + ... + p^k = (p^0 + ... + p^(k/2)) + (p^(k/2 + 1) + ... + p^k) = (p^0 + ... + p^(k/2)) + p^(k/2 + 1)*(p^0 + .. + p^(k/2)) = (1 + p^(k/2 + 1)) * sum(p, k / 2) */ #include <iostream> using namespace std; const int mod = 9901; // 快速幂 int qmi(int a, int k) { a %= mod; // 注意此处要对a模9901 int res = 1; while(k) { if(k & 1) res = res * a % mod; a = a * a % mod; k >>= 1; } return res; } // 等比数列求和 int sum(int p, int k) { if(k == 0) return 1; if(k % 2 == 0) return (p % mod * sum(p, k - 1) + 1) % mod; return (1 + qmi(p, k/2 + 1)) * sum(p, k / 2) % mod; } int main() { int A, B; cin >> A >> B; int res = 1; for(int i = 2; i <= A; ++ i) { int s = 0; while(A % i == 0) { s ++; A /= i; } if(s) res = res * sum(i, B * s) % mod; } if(!A) res = 0; cout << res << endl; return 0; }