競技プログラミング

mod p の世界における割り算とは(Ruby)

qiita.com mod p における「逆元」を考えるとよいそう。Ruby で実装する(元は C++)。 def modinv(a, m) b, u, v = m, 1, 0 until b.zero? t = a / b a -= t * b a, b = b, a u -= t * v u, v = v, u end u %= m u += m if u < 0 u end

AOJ 0141 Spiral Pattern (Ruby)

問題。 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0141&lang=ja「ぐるぐる模様」を出力します。簡単そうでかなりむずかしかったので、印象に残っています。 6番目の「ぐるぐる模様」 ###### # # # ## # # # # # # # # #### コード。 result…

AOJ 0192 Multistory Parking Lot (Ruby)

僕は競技プログラミングは大したことがないけれど、印象に残っている解答を載せてみようと思います。これは Aizu Online Judge (AOJ)の問題。 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0192&lang=ja コード。 class Car num = 1 define_…

AtCoder ABC128C (関数型Ruby?)

https://atcoder.jp/contests/abc128/tasks/abc128_cきれいに Ruby らしく解けたので、メモ。 n, m = gets.split.map(&:to_i) cond = m.times.map { k, *ss = gets.split.map(&:to_i) ss.inject(0) {|acc, s| acc | 1 << (s - 1)} }.zip(gets.split.map(&:to…