C++中計算[L, R]範圍內所有偶數的個數,其各位數字之和能被3整除


給定兩個數字L和R,定義一個範圍[L,R]。目標是在L和R之間找到所有偶數,並且其各位數字之和能被3整除。

我們將透過計算L和R之間所有偶數的各位數字之和,如果該和%3==0,則計數器加1。

讓我們透過例子來理解。

輸入 − L=10, R=20

輸出 − [L, R]範圍內所有偶數的個數,其各位數字之和能被3整除:2

解釋 − 10和20之間的偶數:10,12,14,16,18,20。其各位數字之和能被3整除的數是12和18。

輸入 − L=100, R=108

輸出− [L, R]範圍內所有偶數的個數,其各位數字之和能被3整除:2

解釋 − 100和108之間的偶數:100,102,104,106,108。其各位數字之和能被3整除的數是102和108。

下面程式中使用的方法如下

  • 我們首先取變數first和last來定義範圍。

  • 函式Digit_sum(int num)接收數字並返回其各位數字之和。

  • 使用while迴圈,直到num!=0,將num%10(個位數字)新增到total中。

  • 將num除以10以減少它。

  • 最後,total將包含所有數字的和。

  • 函式divisible_3(int first, int last)接收數字範圍並返回各位數字之和能被3整除的偶數的個數。

  • 從索引i=first到i<=last開始。檢查數字i是否為偶數。(i%2==0)。

  • 如果是,則透過呼叫Digit_sum(i)計算i的各位數字之和。如果該和%3==0,則計數器加1。

  • 在for迴圈結束時,返回count作為結果。

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
int Digit_sum(int num){
   int total = 0;
   while (num!= 0){
      total += num % 10;
      num = num / 10;
   }
   return total;
}
int divisible_3(int first, int last){
   int count = 0;
   for (int i = first; i <= last; i++){
      if (i % 2 == 0 && Digit_sum(i) % 3 == 0){
         count++;
      }
   }
   return count;
}
int main(){
   int first = 300, last = 500;
   cout<<"Count of all even numbers in the range [L, R] whose sum of digits is divisible by 3 are: "<<divisible_3(first, last);
   return 0;
}

輸出

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

Count of all even numbers in the range [L, R] whose sum of digits is divisible by 3 are: 34

更新於:2020-08-31

258 次瀏覽

開啟您的職業生涯

完成課程獲得認證

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