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