結果
問題 |
No.2896 Monotonic Prime Factors
|
ユーザー |
![]() |
提出日時 | 2024-09-25 16:38:32 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 249 ms / 2,000 ms |
コード長 | 1,101 bytes |
コンパイル時間 | 2,090 ms |
コンパイル使用メモリ | 195,984 KB |
最終ジャッジ日時 | 2025-02-24 12:15:51 |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h> using namespace std; void fast_io() { ios_base::sync_with_stdio(false); cin.tie(nullptr); } #include <atcoder/modint> using mint = atcoder::modint998244353; const int M = 5e6; mint fact[M], inv[M]; void init() { fact[0] = 1; for (int i = 1; i < M; i++) { fact[i] = fact[i - 1] * i; } inv[M - 1] = fact[M - 1].inv(); for (int i = M - 2; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1); } } mint binom(int n, int k) { if (k < 0 || n < 0 || n < k) { return 0; } return fact[n] * inv[k] * inv[n - k]; } int main() { fast_io(); init(); int q; cin >> q; int cnt = 0; for (; q--;) { int a, b; cin >> a >> b; for (int i = 2; i * i <= a; i++) { if (a % i == 0) { int c = 0; while (a % i == 0) { a /= i; c++; } cnt += c; } } if (a > 1) { cnt++; } cout << binom(cnt - 1, b - 1).val() << "\n"; } }