結果
問題 | No.2783 4-33 Easy |
ユーザー | PNJ |
提出日時 | 2024-06-14 22:09:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 148 ms / 2,000 ms |
コード長 | 1,417 bytes |
コンパイル時間 | 239 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 77,340 KB |
最終ジャッジ日時 | 2024-06-14 22:09:27 |
合計ジャッジ時間 | 5,264 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 96 ms
76,624 KB |
testcase_01 | AC | 72 ms
72,832 KB |
testcase_02 | AC | 101 ms
76,372 KB |
testcase_03 | AC | 88 ms
76,416 KB |
testcase_04 | AC | 103 ms
76,528 KB |
testcase_05 | AC | 132 ms
76,868 KB |
testcase_06 | AC | 82 ms
76,288 KB |
testcase_07 | AC | 99 ms
76,588 KB |
testcase_08 | AC | 98 ms
76,632 KB |
testcase_09 | AC | 127 ms
77,060 KB |
testcase_10 | AC | 130 ms
76,932 KB |
testcase_11 | AC | 131 ms
77,016 KB |
testcase_12 | AC | 129 ms
77,080 KB |
testcase_13 | AC | 134 ms
76,936 KB |
testcase_14 | AC | 148 ms
77,000 KB |
testcase_15 | AC | 132 ms
76,740 KB |
testcase_16 | AC | 128 ms
77,016 KB |
testcase_17 | AC | 132 ms
76,936 KB |
testcase_18 | AC | 130 ms
76,816 KB |
testcase_19 | AC | 138 ms
77,140 KB |
testcase_20 | AC | 137 ms
76,804 KB |
testcase_21 | AC | 131 ms
76,948 KB |
testcase_22 | AC | 143 ms
76,832 KB |
testcase_23 | AC | 128 ms
77,012 KB |
testcase_24 | AC | 128 ms
76,964 KB |
testcase_25 | AC | 129 ms
77,340 KB |
testcase_26 | AC | 136 ms
76,960 KB |
testcase_27 | AC | 133 ms
77,016 KB |
testcase_28 | AC | 135 ms
76,740 KB |
ソースコード
n = 10 mod = 998244353 inv = [1 for j in range(n+1)] for a in range(2,n+1): # ax + py = 1 <=> rx + p(-x-qy) = -q => x = -(inv[r]) * (p//a) (r = p % a) res = (mod - inv[mod%a]) * (mod // a) inv[a] = res % mod def binom(n,r): res = 1 for i in range(1,r+1): res = res * (n + 1 - i) % mod res = res * inv[i] % mod return res O = [[0 for _ in range(34)] for _ in range(5)] X = [[0 for _ in range(34)] for _ in range(5)] N = int(input()) A = list(map(int,input().split())) B = list(map(str,input().split())) for i in range(N): a = A[i] b = 0 if B[i][-1] == 'X': if len(B[i]) >= 2: b = int(B[i][:-1]) X[a][b] += 1 else: b = int(B[i]) O[a][b] += 1 dp = [[[0 for _ in range(34)] for _ in range(5)] for _ in range(9)] dp[0][0][0] = 1 for a in range(5): for b in range(34): c = O[a][b] for n in range(7,-1,-1): for x in range(5): for y in range(34): for m in range(1,min(c,8) + 1): if n + m > 8: break xx,yy = x + m*a,y + m*b if xx > 4: break if yy > 33: break cc = binom(c % mod,m) dp[n+m][xx][yy] = (dp[n+m][xx][yy] + dp[n][x][y] * cc % mod) % mod ans = 0 for x in range(5): for y in range(34): X[x][y] %= mod a,b = 4 - x,33 - y if y == 0: ans = (ans + dp[8][a][b] * X[x][y] % mod) % mod print(ans)