使用 C++ 统计包含偶数个 0 的 N 位数
给定一个数字 N 作为输入。目标是找到所有包含偶数个 0 作为数字的 N 位数。该数字也可能包含前导零,例如在 N=3 的情况下,包含的数字将是 001、002、003……010……等等。
让我们通过示例来理解。
输入 − N=4
输出 − 包含偶数个 0 的 N 位数的个数为 − 7047
说明 − 所有 4 位数将类似于 −
Smallest will be 0000, then 0011,0012,0013,0014…..Highest will be 9900.
输入 − N=5
输出 − 包含偶数个 0 的 N 位数的个数为 − 66383
说明 − 所有 5 位数将类似于 −
Smallest will be 00001, then 00002,00003,00004…..Highest will be 99900.
下面程序中使用的方案如下
我们首先计算总的 N 位数,即 T=10N-1。然后计算所有包含奇数个 0 作为数字的 N 位数,即 O=10N-8N。包含偶数个 0 作为数字的剩余数字将是 T-O/2。
将整数 N 作为输入。
函数 count_even(int N) 获取 N 并返回包含偶数个 0 的 N 位数的个数。
总的 N 位数为 total=pow(10,N)-1
数字中包含奇数个 0 的总 N 位数为 odd=pow(10,N)-pow(8,N)。
数字中剩余的偶数个 0 为 even=total-odd/2。
返回 even 作为包含偶数个 0 的 N 位数的个数。
示例
#include <bits/stdc++.h> using namespace std; int count_even(int N){ int total = pow(10, N) - 1; int odd = pow(10, N) - pow(8, N); int even = total - odd / 2; return even; } int main(){ int N = 3; cout<<"Count of Numbers with N digits which consists of even number of 0's are: "<<count_even(N); return 0; }
输出
如果我们运行以上代码,它将生成以下输出:−
Count of Numbers with N digits which consists of even number of 0's are: 755
广告