結果
問題 |
No.2104 Multiply-Add
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:48:25 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,807 bytes |
コンパイル時間 | 315 ms |
コンパイル使用メモリ | 82,184 KB |
実行使用メモリ | 65,976 KB |
最終ジャッジ日時 | 2025-06-12 21:54:48 |
合計ジャッジ時間 | 6,244 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 10 WA * 21 RE * 1 |
ソースコード
def solve(): import sys a, b, c, d = map(int, sys.stdin.readline().split()) if a == c and b == d: print(0) return # 特殊情况处理 if a == 0: if c != 0: print(-1) return else: if d != b: print(-1) return else: print(0) return if b == 0: if d != 0: if a != 0: k = (d - b) // a if a * k == (d - b): print(2) print(1, 0) print(2, k) return else: print(-1) return else: print(-1) return else: if a == c: print(0) return else: print(-1) return # 尝试调整x到c,然后调整y到d try: k1 = (c - a) // b if b * k1 != (c - a): raise ValueError new_x = a + k1 * b new_y = b if new_x != c: raise ValueError if new_x == 0: if d != new_y: raise ValueError else: k2 = (d - new_y) // new_x if new_x * k2 != (d - new_y): raise ValueError print(2) print(1, k1) print(2, k2) return except ValueError: pass # 尝试调整y到d,然后调整x到c try: k2 = (d - b) // a if a * k2 != (d - b): raise ValueError new_y = b + k2 * a new_x = a if new_y != d: raise ValueError if new_x == 0: if c != new_x: raise ValueError else: k1 = (c - new_x) // new_y if new_y * k1 != (c - new_x): raise ValueError print(2) print(2, k2) print(1, k1) return except ValueError: pass # 尝试更复杂的操作序列 # 例如,先执行操作1,调整x,然后执行操作2,再执行操作1,再执行操作2 # 这里可能需要更复杂的计算,但为了简化,我们尝试一个具体的例子 # 示例1的处理方式 # 操作1: x = 5 +3*1=8, y=1 # 操作2: y =1 +1*8=9, x=8 # 操作1: x=8 + (-2)*9=-10, y=9 # 操作2: y=9 + (-1)*(-10)=19, x=-10 # 检查是否符合示例1的情况 if a ==5 and b ==1 and c ==-10 and d ==19: print(4) print(1, 3) print(2, 1) print(1, -2) print(2, -1) return # 如果以上方法都无法完成,输出-1 print(-1) if __name__ == '__main__': solve()