結果
問題 |
No.1492 01文字列と転倒
|
ユーザー |
|
提出日時 | 2025-07-22 00:46:52 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,884 ms / 4,000 ms |
コード長 | 1,214 bytes |
コンパイル時間 | 282 ms |
コンパイル使用メモリ | 82,668 KB |
実行使用メモリ | 273,516 KB |
最終ジャッジ日時 | 2025-07-22 00:47:12 |
合計ジャッジ時間 | 16,983 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 22 |
ソースコード
##https://yukicoder.me/problems/no/1492 def main(): N, M = map(int, input().split()) dp = [ {} for _ in range(1)] dp[0][0] = 1 for n in range(2 * N): min_n = min(n + 1, N) new_dp = [{} for _ in range(min_n + 1)] for k in range(len(dp)): dp0 = dp[k] # 1を足す x = n - k if k > x: new_dp0 = new_dp[k] for key, value in dp0.items(): if key not in new_dp0: new_dp0[key] = 0 new_dp0[key] += value new_dp0[key] %= M # 0を足す o = n - k if k + 1 <= min_n: new_dp0 = new_dp[k + 1] for key, value in dp0.items(): new_key = key + o if new_key not in new_dp0: new_dp0[new_key] = 0 new_dp0[new_key] += value new_dp0[new_key] %= M dp = new_dp for k in range(N ** 2 + 1): if k not in dp[-1]: print(0) else: print(dp[-1][k]) if __name__ == "__main__": main()