使用 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

更新于: 2020年12月1日

124 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告