(備忘録)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