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

更新於: 2020年10月31日

258 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.