結果

問題 No.2613 Sum of Combination
ユーザー Sh1n3zZSh1n3zZ
提出日時 2024-01-19 22:05:35
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
TLE  
実行時間 -
コード長 965 bytes
コンパイル時間 1,704 ms
コンパイル使用メモリ 167,520 KB
実行使用メモリ 11,992 KB
最終ジャッジ日時 2024-01-19 22:05:43
合計ジャッジ時間 7,625 ms
ジャッジサーバーID
(参考情報)
judge13 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 3 ms
6,548 KB
testcase_01 AC 2 ms
6,548 KB
testcase_02 TLE -
testcase_03 -- -
testcase_04 -- -
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 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
testcase_31 -- -
testcase_32 -- -
testcase_33 -- -
testcase_34 -- -
testcase_35 -- -
testcase_36 -- -
testcase_37 -- -
testcase_38 -- -
testcase_39 -- -
testcase_40 -- -
testcase_41 -- -
testcase_42 -- -
testcase_43 -- -
testcase_44 -- -
testcase_45 -- -
testcase_46 -- -
testcase_47 -- -
testcase_48 -- -
testcase_49 -- -
testcase_50 -- -
testcase_51 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int MAXN = 2e5 + 5;
const int MOD = 998244353;
ll fac[MAXN], inv[MAXN];

ll qpow(ll a, ll b, ll mod) {
    ll res = 1;
    while(b) {
        if(b & 1) res = res * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return res;
}

void init(int p) {
    fac[0] = 1;
    for(int i = 1; i <= p; ++i) fac[i] = fac[i - 1] * i % p;
    inv[p - 1] = qpow(fac[p - 1], p - 2, p);
    for(int i = p - 2; i >= 0; --i) inv[i] = inv[i + 1] * (i + 1) % p;
}

ll C(ll n, ll m, ll p) {
    if(m > n || m < 0) return 0;
    return fac[n] * inv[m] % p * inv[n - m] % p;
}

ll Lucas(ll n, ll m, ll p) {
    if(!m) return 1;
    return C(n % p, m % p, p) * Lucas(n / p, m / p, p) % p;
}

int main() {
    ll n, p;
    scanf("%lld%lld", &n, &p);
    init(p);
    ll ans = 0;
    for(ll i = 0; i <= n; ++i) {
        ans = (ans + Lucas(n, i, p)) % MOD;
    }
    printf("%lld\n", ans);
    return 0;
}
0