各桁の和を求める部分、とくに各桁の値を取り出すのに悩んだ。 「10 で割った余りを求める→10で割る」を繰り返す泥臭い方法になったけど、 もっとスマートに書けないものかな。
using System; namespace ABC083B { class Program { static void Main(string[] args) { var input = Console.ReadLine().Split(' '); var n = int.Parse(input[0]); var a = int.Parse(input[1]); var b = int.Parse(input[2]); var answer = 0; for(var i = 1; i <= n; i++) { var sumOfEachDigit = 0; for (var j = i; j > 0; j /= 10) { sumOfEachDigit += j % 10; } if (a <= sumOfEachDigit && sumOfEachDigit <= b) { answer += i; } } Console.WriteLine(answer); } } }