(備忘録)AtCorderをやって 3 (Some Sums)

問題

1 以上 N 以下の整数のうち、10 進法での各桁の和が A 以上 B 以下であるものの総和を求めてください。

制約

1≤N≤10 4

1≤A≤B≤36

入力はすべて整数である

入力

N A B

自分の回答

各桁の和ってどうやって求めるんだろうと思ってたけど、digitsとsumを使えばいけるということで思いの外いけた

Integer#digits (Ruby 2.7.0 リファレンスマニュアル)

N, a, b = gets.split(' ').map(&:to_i)
arr = []
(1..N).each {|n|
  total_i = n.digits.sum
  if (a <= total_i) && (b >= total_i) 
    arr << n
  end
}
puts arr.sum

時間の関係で他の回答を見れてないので次他の回答で良さそうなやつを探す

補足

後から考えたら単純にif文のところ1行でいけたのでこれが自分が考えた一番短いやつですね

N, a, b = gets.split(' ').map(&:to_i)
arr = []
(1..N).each {|n|
  total = n.digits.sum
  arr << n if a <= total && b >= total
}
puts arr.sum