# AtCoder Regular Contest 102

URL: https://atcoder.jp/contests/arc102 (opens new window)

# C

n,k = gets.chomp.split(" ").map(&:to_i)

# 合同式の変形を行うと a ≡ b ≡ c (mod k) ということに注目

# key: kで割ったあまり, value: 個数
hash = {}
(1..n).each do |i|
  r = i % k
  # 2倍してkの倍数にならないものは除外
  next if (r * 2) % k != 0
  hash[r] ||= 0
  hash[r] += 1
end

result = 0
hash.each do |k, v|
  # a, b, cが取りうる組み合わせ
  result += v ** 3
end

puts result
Last Updated: 2020/08/15 20:23