結果
| 問題 |
No.849 yuki国の分割統治
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-07-05 22:32:02 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 380 ms / 2,000 ms |
| コード長 | 663 bytes |
| コンパイル時間 | 47 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 22,272 KB |
| 最終ジャッジ日時 | 2024-10-06 22:31:04 |
| 合計ジャッジ時間 | 8,977 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 26 |
コンパイルメッセージ
Syntax OK
ソースコード
def extgcd(a, b)
if b == 0
{x: 1, y: 0, gcd: a}
else
prev = extgcd(b, a % b)
{
x: prev[:y],
y: prev[:x] - (a / b) * prev[:y],
gcd: prev[:gcd]
}
end
end
a, b, c, d = gets.split.map(&:to_i)
swap = false
if a == 0 && c == 0
swap = true
a, b = b, a
c, d = d, c
end
gx = a.gcd(c);
dy0 = (c*b-a*d).abs / gx
hash = extgcd(a/gx, c/gx)
dy1 = hash[:x]*b + hash[:y]*d
result = {}
N = gets.to_i
N.times do
x, y = gets.split.map(&:to_i)
x, y = y, x if swap
x2 = x % gx
y2 = y - (x-x2)/gx*dy1
y2 %= dy0 if dy0 > 0
result[[x2, y2]] = true
end
puts result.size