結果
問題 |
No.2426 Select Plus or Minus
|
ユーザー |
|
提出日時 | 2025-07-26 13:31:12 |
言語 | PyPy3 (7.3.15) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,263 bytes |
コンパイル時間 | 237 ms |
コンパイル使用メモリ | 82,640 KB |
実行使用メモリ | 711,180 KB |
最終ジャッジ日時 | 2025-07-26 13:31:22 |
合計ジャッジ時間 | 5,051 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 3 |
other | AC * 5 MLE * 1 -- * 35 |
ソースコード
## https://yukicoder.me/problems/no/806 from collections import deque def main(): N = int(input()) dp = {N: 0} prev = {N: -1} queue = deque() queue.append(N) while len(queue) > 0: w = queue.popleft() if w % 2 == 0: x = w // 2 if x not in dp: dp[x] = dp[w] + 1 prev[x] = (w, "/") queue.append(x) if x == 1: break else: # + x = 3 * w + 1 if x <= 10 ** 18: if x not in dp: dp[x] = dp[w] + 1 prev[x] = (w, "+") queue.append(x) if x == 1: break # - x = 3 * w - 1 if x <= 10 ** 18: if x not in dp: dp[x] = dp[w] + 1 prev[x] = (w, "-") queue.append(x) if x == 1: break answer = [] x = 1 while x != N: x, y = prev[x] answer.append(y) answer.reverse() print(len(answer)) print("".join(answer)) if __name__ == "__main__": main()