結果
| 問題 |
No.2147 ハノイの塔のおもちゃ
|
| コンテスト | |
| ユーザー |
rlangevin
|
| 提出日時 | 2024-01-11 08:54:25 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 42 ms / 2,000 ms |
| コード長 | 578 bytes |
| コンパイル時間 | 484 ms |
| コンパイル使用メモリ | 82,104 KB |
| 実行使用メモリ | 54,332 KB |
| 最終ジャッジ日時 | 2024-09-27 20:24:54 |
| 合計ジャッジ時間 | 1,508 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 8 |
ソースコード
N = int(input())
S = list(input())
two = [1] * (N + 1)
mod = 10 ** 9 + 7
for i in range(N):
two[i + 1] = two[i] * 2 % mod
pre = [0] * 3
for i in range(N):
dp = [0] * 3
if S[i] == "A":
dp[0] = pre[0]
dp[1] = (pre[2] + two[i]) % mod
dp[2] = (pre[1] + two[i]) % mod
elif S[i] == "B":
dp[1] = pre[1]
dp[2] = (pre[0] + two[i]) % mod
dp[0] = (pre[2] + two[i]) % mod
else:
dp[2] = pre[2]
dp[1] = (pre[0] + two[i]) % mod
dp[0] = (pre[1] + two[i]) % mod
dp, pre = pre, dp
print(pre[0])
rlangevin