提出 #52134565


ソースコード 拡げる

// LUOGU_RID: 154733952
#include <bits/stdc++.h>
using namespace std; 
const int P = 998244353; 
const int N = 2e7 + 5; 

inline int poww(int a, int b) {
    int r = 1; 
    for (; b; b >>= 1, a = 1ll * a * a % P) if (b & 1) r = 1ll * r * a % P; 
    return r; 
}
int n, A, B; 
int fac[N], ifac[N]; 
inline void initFac(void) {
    for (int i = fac[0] = 1; i < N; ++i) fac[i] = 1ll * fac[i - 1] * i % P; 
    ifac[N - 1] = poww(fac[N - 1], P - 2); 
    for (int i = N - 2; i >= 0; --i) ifac[i] = 1ll * ifac[i + 1] * (i + 1) % P; 
}
inline int C(int n, int m) {
    if (m < 0 || n < m || n < 0) return 0; 
    return 1ll * fac[n] * ifac[m] % P * ifac[n - m] % P; 
}
inline int F(int a, int b) {
    return (C(a + b - 1, a - 1) - C(a + b - 1, b - 1) + P) % P; 
}

int main(void) {
    initFac(); 
    cin >> n >> B >> A; // A >= B
    if (A == 0 && B == 0) return cout << "1\n", 0; 
    int ans = (A + B == n ? F(A, B) : 0); 
    for (int k = 0; k <= B; ++k)
        // B - k 次 up
        ans = (ans + 1ll * F(A, B - k) * C(n - A - (B - k) - 1 + k, k)) % P; 
    cout << ans << '\n'; 
    return 0;
}

提出情報

提出日時
問題 F - Two Pieces
ユーザ james1BadCreeper
言語 C++ 17 (gcc 12.2)
得点 2200
コード長 1135 Byte
結果 AC
実行時間 284 ms
メモリ 159924 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 2200 / 2200
結果
AC × 4
AC × 38
セット名 テストケース
Sample 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 00-sample-04.txt
All 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 00-sample-04.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, 01-31.txt, 01-32.txt, 01-33.txt, 01-34.txt
ケース名 結果 実行時間 メモリ
00-sample-01.txt AC 227 ms 159844 KiB
00-sample-02.txt AC 226 ms 159720 KiB
00-sample-03.txt AC 227 ms 159788 KiB
00-sample-04.txt AC 228 ms 159732 KiB
01-01.txt AC 228 ms 159748 KiB
01-02.txt AC 229 ms 159792 KiB
01-03.txt AC 228 ms 159752 KiB
01-04.txt AC 228 ms 159736 KiB
01-05.txt AC 251 ms 159884 KiB
01-06.txt AC 273 ms 159700 KiB
01-07.txt AC 251 ms 159896 KiB
01-08.txt AC 232 ms 159924 KiB
01-09.txt AC 253 ms 159780 KiB
01-10.txt AC 228 ms 159716 KiB
01-11.txt AC 261 ms 159796 KiB
01-12.txt AC 238 ms 159648 KiB
01-13.txt AC 232 ms 159712 KiB
01-14.txt AC 250 ms 159788 KiB
01-15.txt AC 253 ms 159788 KiB
01-16.txt AC 254 ms 159668 KiB
01-17.txt AC 271 ms 159804 KiB
01-18.txt AC 238 ms 159756 KiB
01-19.txt AC 239 ms 159748 KiB
01-20.txt AC 229 ms 159756 KiB
01-21.txt AC 278 ms 159692 KiB
01-22.txt AC 282 ms 159876 KiB
01-23.txt AC 249 ms 159784 KiB
01-24.txt AC 275 ms 159788 KiB
01-25.txt AC 234 ms 159716 KiB
01-26.txt AC 263 ms 159676 KiB
01-27.txt AC 230 ms 159716 KiB
01-28.txt AC 269 ms 159784 KiB
01-29.txt AC 284 ms 159880 KiB
01-30.txt AC 254 ms 159848 KiB
01-31.txt AC 264 ms 159696 KiB
01-32.txt AC 275 ms 159884 KiB
01-33.txt AC 256 ms 159804 KiB
01-34.txt AC 279 ms 159800 KiB