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
廣告