はじめに
速い速いと評判のsum
が本当に速かった話
今回のお題
AtCoder Beginner Contest B - Trapezoid Sum
Difficulty: 27
今回のテーマ、等差数列の和
題意としては、普通に加算するとTLE
するので、等差数列の和の公式
S=n(a+b)/2
を使いましょうというもの。
inject(TLE)
ruby.rb
n = gets.to_i
sum = 0
n.times do
a, b = gets.split.map(&:to_i)
sum += (a..b).inject(:+)
end
puts sum
見事にTLE
sum(AC)
ruby.rb
n = gets.to_i
sum = 0
n.times do
a, b = gets.split.map(&:to_i)
sum += (a..b).sum
end
puts sum
普通に通ります。
range
のsum
は内部的に、等差数列の和の公式を使っていると思われます(適当)
どうやら本当だった様子。
コメント欄を参照願います。
Ruby(inject) | Ruby(sum) | |
---|---|---|
コード長 (Byte) | 110 | 103 |
実行時間 (ms) | TLE | 135 |
メモリ (KB) | 14344 | 14392 |
まとめ
- ABC 181 B を解いた
- sum は速かった