C++ 中求解區間 [L, R] 內數字之和等於 Y 的數字個數
我們給出兩個數字 START 和 END 來定義一個數字範圍。目標是在 [START,END] 範圍內找到所有數字之和等於給定數字 Y 的數字。
我們將透過遍歷從 START 到 END 的數字來實現這一點,並對每個數字使用 while 迴圈計算其數字之和。如果此和等於 Y,則遞增計數。
讓我們透過示例來理解。
輸入
START=10 END=20 Y=4
輸出
Numbers such that digit sum is equal to Y: 1
解釋
Number 13 has digit sum equal to 4.
輸入
START=10 END=50 Y=5
輸出
Numbers such that digit sum is equal to Y: 5
解釋
Numbers 14, 23, 32, 41 and 50 have digit sum 5.
下面程式中使用的思路如下
我們獲取整數 START、END、Y。
函式 digitSum(int start, int end, int y) 返回數字之和等於 y 的數字個數
將初始變數 count 設定為 0,表示此類數字的個數。
將變數 digsum 設定為 0
使用 for 迴圈遍歷數字範圍。i=start 到 i=end
現在對於每個數字 num=i,使用 while 迴圈檢查數字是否 >0。
計算 digsum+=num%10。將 num=num/10 以新增下一個數字。
在 while 迴圈結束時,檢查 ( digsum == d )。如果為真,則遞增 count。
在所有迴圈結束時,count 將包含滿足條件的數字總數。
返回 count 作為結果。
示例
#include <bits/stdc++.h>
using namespace std;
int digitSum(int start, int end, int y){
int count = 0;
int digsum = 0;
for (int i = start; i <= end; i++){
int num=i;
digsum=0;
while(num>0){
digsum+=num%10; //sum of digits
num=num/10;
}
if(digsum==y) //original number is i{
count++;
//cout<<i<<" ";
}
}
return count;
}
int main(){
int START = 100;
int END = 1000;
int Y = 5;
cout <<"Numbers such that digit sum is equal to Y: "<<digitSum(START,END,Y);
return 0;
}輸出
如果我們執行以上程式碼,它將生成以下輸出:
Numbers such that digit sum is equal to Y: 15
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP