結果
問題 |
No.3162 Five Two Three
|
ユーザー |
![]() |
提出日時 | 2025-05-23 20:39:35 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,861 bytes |
コンパイル時間 | 349 ms |
コンパイル使用メモリ | 82,108 KB |
実行使用メモリ | 707,652 KB |
最終ジャッジ日時 | 2025-05-23 20:39:40 |
合計ジャッジ時間 | 4,093 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 4 WA * 1 MLE * 1 -- * 181 |
ソースコード
x, y, z = map(int, input().split()) if x == y == z == 0: print(3) print(0, 0, 0) exit() if x == z == 0: print(6) print(0, y, y, 0, y, y) exit() if y == z == 0: print(6) print(x, x, 0, x, x, 0) exit() if x == y == 0: print(4) print(0, z, z, 0) exit() def f(a, z): s = 1, 0 t = 0, 1 bl = 0 br = a i = 1 ans = [] if a == 0: s = 0 t = 1 i = 1 while True: if t <= z: if t % z == 0: b = t // z res = [a, b] j = 1 while j < i: res.append(res[j-1] + res[j]) ans.append(res) else: break s, t = t, s + t i += 1 return ans while bl <= br: t0, t1 = t # a*t0+b*t1 = z if (z - a * t0) % t1 == 0: b = (z - a * t0) // t1 if bl <= b <= br: res = [a, b] j = 1 while j < i: res.append(res[j-1] - res[j]) j += 1 assert len(res) == j + 1 and res[j] == z ans.append(res) s, t = t, (s[0] - t[0], s[1] - t[1]) i += 1 if i % 2 == 0: t0 = t[0] t1 = -t[1] assert t0 > 0 and t1 > 0 br = min(br, a * t0 // t1) else: t0 = -t[0] t1 = t[1] assert t0 > 0 and t1 > 0 bl = max(bl, (a * t0 + t1 - 1) // t1) return ans dl = f(x, z) dr = f(y, z) ans = None for p in dl: for q in dr: if abs(p[-2] - q[-2]) == z and (ans is None or len(p) + len(q) - 1 < len(ans)): ans = p + q[-2::-1] if not ans: print(-1) else: print(len(ans)) print(*ans)