ABC159
https://atcoder.jp/contests/abc159
過去問。
A: The Number of Even Pairs
偶数から2個か奇数から2個取ればよい。
#x個の中から2個取る組み合わせの数 def c(x) return 0 if x == 0 || x == 1 x * (x - 1) / 2 end n, m = gets.split.map(&:to_i) puts c(n) + c(m)
B: String Palindrome
#回文(palindrome)か def pl?(str) str == str.reverse end s = gets.chomp n = s.length f = pl?(s) && pl?(s[0..(n - 3) / 2]) && pl?(s[(n + 1) / 2..-1]) puts f ? "Yes" : "No"
C: Maximum Volume
立方体になるときがいちばん体積が大きくなる。
x = gets.to_r / 3 puts (x ** 3).to_f
D: Banned K
まずは組み合わせの数をすべて足し合わせたもの(sum)を求めておく。
#x個の中から2個取る組み合わせの数 def c(x) return 0 if x == 0 || x == 1 x * (x - 1) / 2 end gets balls = gets.split.map(&:to_i) numbers_table = Hash.new(0) balls.each {|n| numbers_table[n] += 1} sum = numbers_table.map {|n, i| c(i)}.inject(&:+) balls.each do |n| puts sum - c(numbers_table[n]) + c(numbers_table[n] - 1) end