C++中計算範圍內僅包含非零數字且數字和為N且能被M整除的數字個數


我們提供了兩個數字START和END來定義一個數字範圍。目標是在範圍[START,END]中找到所有沒有數字0且數字和等於給定數字N的數字。此外,這些數字可以被M整除。

我們將透過遍歷從START到END的數字來實現這一點,並對每個數字,我們將使用while迴圈計算其數字的和(僅當所有數字都不為零時)。如果此和等於N並且數字可以被M整除,則增加計數。

讓我們透過示例來理解。

輸入 

START=1 END=100 N=9 M=6

輸出 

Numbers with digit sum N and divisible by M: 4

解釋 

Numbers 18, 36, 54, 72 have digit sum=9 and divisible by 6. None has 0 as a digit.

輸入 

START=100 END=200 N=10 M=2

輸出 

Numbers with digit sum N and divisible by M: 4

解釋 

Numbers 118, 136, 154, 172 have digit sum=10 and divisible by 2. None has 0 as a digit.

下面程式中使用的演算法如下

  • 我們獲取整數START、END、N和M。

  • 函式digitSum(int start, int end, int n, int m)返回數字和=n且能被m整除且所有數字都不為零的數字的個數。

  • 將初始變數count設定為0,表示此類數字的個數。

  • 將變數digsum設定為0。

  • 將變數flag設定為0。

  • 使用for迴圈遍歷數字範圍。i=start到i=end

  • 現在對於每個數字num=i,如果num%m==0(能被m整除),則繼續執行。

  • 使用while迴圈檢查數字是否>0。並找到數字。

  • digit=num%10。如果digit不為零,則計算digsum+=digit。將num=num/10減少以新增下一個數字。如果任何數字為0,則將flag=0並中斷while迴圈。

  • 在while迴圈結束時,檢查是否( digsum == n and flag==1 )。如果是,則增加count。

  • 現在將i增加m(以m的倍數增加)。

  • 在所有迴圈結束時,count將包含滿足條件的數字總數。

  • 返回count作為結果。

示例

 即時演示

#include <bits/stdc++.h>
using namespace std;
int digitSum(int start, int end, int n, int m){
   int count = 0;
   int digsum = 0;
   int flag=0;
   for (int i = start; i <= end; i++){
      int num=i;
      digsum=0;
      flag=0;
      if(num%m==0){
         while(num>0){
            int digit=num%10;
            if(digit==0){
               flag=0;
               break;
            }
            digsum+=num%10; //sum of digits
            num=num/10;
            flag=1;
         }
         if(digsum==n && flag==1) //original number is i {
            count++;
            cout<<i<<" ";
         }
         i+=m; //now increment in multiples of m
         i--; // for loop has i++
      }
   }
   return count;
}
int main(){
   int START = 1;
   int END = 100;
   int N = 9;
   int M = 6;
   cout <<"Numbers with digit sum N and divisible by M: "<<digitSum(START,END,N, M);
   return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出:

Numbers with digit sum N and divisible by M: 4

更新時間: 2020年10月31日

326 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

立即開始
廣告