結果
問題 | No.849 yuki国の分割統治 |
ユーザー | betrue12 |
提出日時 | 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