結果

問題 No.2896 Monotonic Prime Factors
ユーザー vjudge1vjudge1
提出日時 2024-09-25 15:31:16
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
TLE  
実行時間 -
コード長 1,151 bytes
コンパイル時間 2,170 ms
コンパイル使用メモリ 200,820 KB
実行使用メモリ 243,328 KB
最終ジャッジ日時 2024-09-25 15:31:26
合計ジャッジ時間 8,642 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 476 ms
243,328 KB
testcase_01 AC 456 ms
237,824 KB
testcase_02 AC 456 ms
237,824 KB
testcase_03 AC 490 ms
237,824 KB
testcase_04 TLE -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int N = 1e5 + 10, M = 1e7 + 10, mod = 998244353;

int q, prime[N], cnt, ct[N];
ll inv[M], fact[M], factinv[M];
bool f[N];

ll C(int n, int m) {
    return fact[n] * factinv[m] % mod * factinv[n - m] % mod;
}

int main() {
    ios::sync_with_stdio(0), cin.tie(0);
    f[1] = 1;
    for (int i = 2; i < N; i++) {
        if (!f[i]) prime[++cnt] = i;
        for (int j = 1; j <= cnt && 1ll * prime[j] * i < N; j++) {
            f[i * prime[j]] = 1;
        }
    }

    inv[1] = 1;
    for (int i = 2; i < M; i++) {
        inv[i] = (mod - mod / i) * inv[mod % i] % mod;
    }
    fact[0] = factinv[0] = 1;
    for (int i = 1; i < M; i++) {
        fact[i] = fact[i - 1] * i % mod;
        factinv[i] = factinv[i - 1] * inv[i] % mod;
    }

    cin >> q;
    while (q--) {
        int x, y; cin >> x >> y;
        int sum = 0;
        for (int i = 1; i <= cnt; i++) {
            while (x % prime[i] == 0) ct[i]++, x /= prime[i];
            sum += ct[i];
        }
        if (sum < y) cout << 0 << '\n';
        else cout << C(sum - 1, y - 1) << '\n';
    }
    return 0;
}
0