C++中統計不含特定數字的n位數


給定一個數字,例如num,以及儲存在整數型別變數(例如digi)中的總位數,任務是計算可以形成的那些n位數的個數,其中不包含給定的數字。

輸入 − n = 2, digit = 2

輸出 − count is 153

說明 − 不包含數字2的所有兩位數(n)的個數為153,例如10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34,.......等等。

輸入 − n = 3, digit = 3

輸出 − count is 2187

說明 − 不包含數字3的所有三位數(n)的個數為2187,例如100, 101, 102, …等等。

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

  • 輸入數字‘n’和數字作為整型變數。

  • 將這些變數傳遞給一個執行計數操作的函式。

  • 設定兩個變數min和max,表示‘n’可以達到的值。例如,兩位數的最小值為10,最大值為99;三位數的最小值為100,最大值為999。

  • 從min迴圈到max。

  • 在迴圈內部,使用while迴圈直到‘n’大於0。

  • 檢查數字是否存在。如果數字存在,則不執行任何操作;如果數字不存在,則計數加1。

示例

 線上演示

#include<bits/stdc++.h>
using namespace std;
int count(int n, int digit){
   int r =0;
   int count = 0;
   //calculate the min and max of the given number
   int min = (int)(pow(10, n-1));
   int max = (int)(pow(10, n));
   //start the loop till max value start from min
   for(int i=min; i<max; i++){
      int a=i;
      int f=0;
      //while a is greater than 0
      while(a>0){
         r=a%10;
         a=a/10;
         if(r==digit){
            f++;
         }
         if(f==0){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int n = 2, digit = 2;
   cout<<"Count of "<<n<< digit numbers not having a particular digit "<<digit<<" is :"<<count(n, digit);
   return 0;
}

輸出

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

Count of 2 digit numbers not having a particular digit 2 is :153

更新於:2020年6月6日

瀏覽量:177

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告