今日はこの問題を解いていきます。
目次
問題
以上 以下の整数のうち、 進法での各桁の和が 以上 以下であるものの総和を求めてください。
入力例
10 1 2
出力
13
問題が少しわかりにくいですが、10、1、2を入力した場合
10,9,8,7,6,5,4,3,2,1
とあり、
1+0,9,8,7,6,5,4,3,2,1
となるため、1以上2以下を満たすのは
1+0,2,1
となります。その元の数は
10,2,1
のためこれらの総和は13になるというわけです。
答え
#include <iostream>
using namespace std;
int main(){
int A,B;
int N;
int tmp; //一時置き場
int SUM=0;
int NUM=0; //各桁の合計
cin >> N;
cin >> A >> B;
for(int i=N ; i>0; i--){
tmp = i;
NUM =0;
while(tmp>=1){
NUM = NUM + tmp % 10;
tmp = tmp /10;
}
if(NUM>=A && NUM <=B){
SUM = SUM + i;
}
}
cout << SUM <<endl;
}
C言語の場合、
cin をscanf
cout をprintfに読み替えてください。
【解説】
簡単に解説を書いてみました。もし需要があればもっと詳しい解説するので、必要な形はコメント欄で教えてください。
以上です。