用C++统计包含奇数个0的N位数
给定一个数字N作为输入。目标是找到所有N位数,这些数字的0的个数为奇数。数字也可能包含前导零,例如,如果N=3,则包含的数字将是000、011、012……990。
让我们通过例子来理解。
输入 − N=3
输出 − 包含偶数个0的N位数的个数为 − 244
解释 − 所有3位数将类似于−
Smallest will be 000, then 011,012,013,0014…..Highest will be 990.
输入 − N=5
输出 − 包含偶数个0的N位数的个数为 − 33616
解释 − 所有5位数将类似于−
Smallest will be 00000, then 00011,00012,00013,0014…..Highest will be 99990.
下面程序中使用的方法如下
我们首先计算总的N位数T=10N-1。然后计算所有N位数中0的个数为偶数的数字,即E=10N-8N。剩余的数字中0的个数为奇数的将为(T-E)/2。
输入一个整数N。
函数count_dd(int N)接收N并返回包含奇数个0的N位数的个数。
总的N位数为total=pow(10,N)-1
数字中0的个数为偶数的总N位数为even=pow(10,N)-pow(8,N)。
数字中0的个数为奇数的剩余个数为odd=(total-even)/2。
返回odd作为包含奇数个0的N位数的个数。
示例
#include <bits/stdc++.h> using namespace std; int count_odd(int N){ int total = pow(10, N); int even = pow(8, N); int odd = (total - even) / 2; return odd; } int main(){ int N = 4; cout<<"Count of Numbers with N digits which consists of odd number of 0's are: "<<count_odd(N); return 0; }
输出
如果我们运行上面的代码,它将生成以下输出:
Count of Numbers with N digits which consists of odd number of 0's are: 2952
广告