输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少
Posted 1216-zhouj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少相关的知识,希望对你有一定的参考价值。
输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少?
例子:输入数字9,则输出结果位9。因为[0-9]中,只有数字7有连续的三个‘1’出现,别的都没有,所以一共有9个数字满足要求。
分析:这个题目与求解一个正整数中‘1’的个数有点类似,就是进行一些循环处理。
代码如下:
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int n,num_1=0,k=0; 6 cin>>n; 7 for(int i=1;i<=n;i++)//对[1-n]进行循环处理 8 { 9 int j=i; 10 while(j) 11 { 12 if(j&1) 13 num_1++;//该位置为1,则计数加1 14 else 15 num_1=0;//该位置出现0,则计数清零 16 j >>= 1; 17 if(num_1==3)//假如计数达到3,这break处理,减少运算量 18 { 19 k++; //满足连续三个1的条件数字总个数 20 break; 21 } 22 23 } 24 num_1=0; 25 } 26 cout<<n-k+1; 27 return 0; 28 }
以上是关于输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少的主要内容,如果未能解决你的问题,请参考以下文章
用python输入正整数N,计算1到N之间所以奇数的平方和,输出结果?
键盘输入小于10的正整数n,若输入超出范围,则重新输入,直到符合,计算并输出n!
用C语言编程,输入一个正整数,计算并显示该数的各位数字之和。