C++ 中計算可被給定數字整除的 n 位數


假設我們有兩個元素,例如 d 和 num,任務是找到可被 num 整除的 d 位數。

簡單來說,假設我們輸入 d 為 2,那麼我們將首先找到所有兩位數,即 10 到 99,然後找到所有可被 num 整除的數字。

讓我們透過一些例子來進一步理解這一點:

輸入 - 位數 = 2,num= 12

輸出 - 可被給定數字整除的 n 位數的個數:8

解釋 - 可被 12 整除的兩位數是 12、24、36、48、60、72、84 和 96,因此有 8 個兩位數可被 12 整除。

輸入 - 位數 = 2,num= 9

輸出 - 可被給定數字整除的 n 位數的個數 - 10

解釋 - 可被 9 整除的兩位數是 18、27、36、45、54、63、72、81、90 和 99,因此有 10 個兩位數可被 9 整除。

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

  • 將元素位數和 num 作為輸入。

  • 將變數 count 初始化為 0,用於計算可被 num 整除的數字個數。

  • 宣告並設定 digi_first 為 pow(10, digit - 1)

  • 宣告並設定 digi_last 為 pow(10, digit)

  • 現在宣告並設定 d_first 為 digi_first % num,d_last 為 digi_last % num

  • 在找到 d_first 和 d_last 後,將 digi_first 設定為 (digi_first - d_first) + num,將 digi_last 設定為 digi_last - d_last

  • 現在將 count 設定為 ((digi_last - digi_first) / num + 1)。

  • 返回並列印 count。

示例

 即時演示

#include <cmath>
#include <iostream>
using namespace std;
int main(){
   int digit = 2 , num = 9;
   //store the count
   int count= 0 ;
   int digi_first = pow(10, digit - 1);
   int digi_last = pow(10, digit);
   int d_first = digi_first % num;
   int d_last = digi_last % num;
   digi_first = (digi_first - d_first) + num;
   digi_last = digi_last - d_last;
   count = ((digi_last - digi_first) / num + 1);
   cout<<"Count of n digit numbers divisible by given number: "<<count<<"\n";
   return 0;
}

輸出

如果我們執行以上程式碼,我們將得到以下輸出:

Count of n digit numbers divisible by given number: 10

更新於: 2020年6月6日

313 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告