結果

問題 No.3162 Five Two Three
ユーザー Kude
提出日時 2025-05-23 20:32:37
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,240 bytes
コンパイル時間 380 ms
コンパイル使用メモリ 82,904 KB
実行使用メモリ 54,368 KB
最終ジャッジ日時 2025-05-23 20:33:11
合計ジャッジ時間 13,784 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 101 WA * 86
権限があれば一括ダウンロードができます

ソースコード

diff #

x, y, z = map(int, input().split())

def f(a, z):
    s = 1, 0
    t = 0, 1
    bl = 0
    br = a
    i = 1
    ans = []
    if a == 0:
        ans.append([0, z])
        ans.append([0, z, z])
        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)
0