結果
問題 |
No.2807 Have Another Go (Easy)
|
ユーザー |
![]() |
提出日時 | 2025-06-12 13:14:48 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,784 bytes |
コンパイル時間 | 173 ms |
コンパイル使用メモリ | 82,172 KB |
実行使用メモリ | 272,204 KB |
最終ジャッジ日時 | 2025-06-12 13:16:58 |
合計ジャッジ時間 | 4,831 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 1 TLE * 1 -- * 44 |
ソースコード
MOD = 998244353 def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]); ptr +=1 M = int(input[ptr]); ptr +=1 k = int(input[ptr]); ptr +=1 Cs = list(map(int, input[ptr:ptr+k])) ptr +=k # Precompute powers of 6 modulo MOD max_power = 2*N + 6 pow6 = [1] * (max_power +1) for i in range(1, max_power+1): pow6[i] = pow6[i-1] *6 % MOD # Compute T: total number of valid sequences T = 0 dp = [0]*(2*N) dp[0] = 1 for a in range(2*N): if dp[a] ==0: continue for d in range(1,7): new_a = a +d if new_a >= 2*N: T = (T + dp[a] * pow6[0]) % MOD # pow6[0] is 1, since no more steps else: dp[new_a] = (dp[new_a] + dp[a]) % MOD # For each query Ci, compute S_i and output (T - S_i) mod MOD for c in Cs: # DP for S_i: sequences that never hit c mod N dp0 = [0]*(2*N) dp0[0] = 1 S = 0 for a in range(2*N): if dp0[a] ==0: continue # Check if current a is a starting X of a step, which is added to Y # The starting X is a, so check a mod N != c if a % N == c: dp0[a] =0 # invalidate this state continue for d in range(1,7): new_a = a +d if new_a >= 2*N: S = (S + dp0[a]) % MOD else: # Check if the next step's starting X (new_a) mod N is not c if new_a % N != c: dp0[new_a] = (dp0[new_a] + dp0[a]) % MOD ans = (T - S) % MOD print(ans) if __name__ == '__main__': main()