用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

更新于:2020年12月1日

238 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告