結果

問題 No.2356 Back Door Tour in Four Seasons
ユーザー 👑 AngrySadEightAngrySadEight
提出日時 2023-04-08 12:07:39
言語 PyPy3
(7.3.15)
結果
RE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,614 bytes
コンパイル時間 412 ms
コンパイル使用メモリ 82,048 KB
実行使用メモリ 76,800 KB
最終ジャッジ日時 2024-11-15 23:41:50
合計ジャッジ時間 4,719 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 125 ms
66,560 KB
testcase_01 AC 131 ms
67,072 KB
testcase_02 AC 161 ms
76,032 KB
testcase_03 AC 139 ms
70,784 KB
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 AC 153 ms
75,776 KB
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
testcase_20 RE -
testcase_21 RE -
testcase_22 RE -
testcase_23 RE -
testcase_24 RE -
testcase_25 RE -
testcase_26 RE -
testcase_27 RE -
testcase_28 AC 81 ms
65,408 KB
testcase_29 AC 80 ms
65,152 KB
testcase_30 AC 264 ms
76,800 KB
testcase_31 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
sys.setrecursionlimit(10 ** 6)

def my_pow(x, n, mod):
    if n == 0:
        return 1
    elif n % 2 == 1:
        return (x * my_pow((x * x) % mod,  n // 2, mod)) % mod
    else:
        return my_pow((x * x) % mod, n // 2, mod)


mod = 998244353

N = int(input())
all_sum = 0
spring = 0
summer = [0 for _ in range(201)]
fall = [0 for _ in range(201)]
winter = [0 for _ in range(201)]
for i in range(N):
    S, A = map(str, input().split())
    iA = int(A)
    all_sum += iA
    if S == 'P':
        spring += 1
    if S == 'U':
        summer[iA] += 1
    if S == 'F':
        fall[iA] += 1
    if S == 'W':
        winter[iA] += 1

pow_1 = [0 for _ in range(202)]
pow_2 = [0 for _ in range(202)]
pow_3 = [0 for _ in range(606)]
for i in range(201):
    pow_1[i] = my_pow(N - 1, i, mod)
    pow_2[i] = my_pow(N - 2, i, mod)
for i in range(606):
    if i <= all_sum:
        pow_3[i] = my_pow(N - 1, all_sum - i, mod)

ans = 0
for i in range(1, 201):
    for j in range(1, 201):
        for k in range(1, 201):
            if summer[i] == 0 or fall[j] == 0 or winter[k] == 0:
                continue
            prod = 1
            prod = (prod * ((pow_1[i] - pow_2[i] + mod) % mod)) % mod
            prod = (prod * ((pow_1[j] - pow_2[j] + mod) % mod)) % mod
            prod = (prod * ((pow_1[k] - pow_2[k] + mod) % mod)) % mod
            prod = (prod * pow_3[i + j + k]) % mod
            prod = (prod * summer[i]) % mod
            prod = (prod * fall[j]) % mod
            prod = (prod * winter[k]) % mod
            prod = (prod * spring) % mod
            ans = (ans + prod) % mod
print(ans)
0