はじめに
速い速いと評判の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 は速かった