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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP