描述
在一个int型整教(对应的比特流)中查找某个比特快(本题固定为4,即二进制’101’)出现的次数及首次出现的位置,说明:
1、输出次数和首次出现的位置中间用空格隔开。
2、位置从0开始,即最右边位置为0,向左依从增加。
3、如果该int型整数中没有找到该比特快、次数返回0,位置返回-1
4.比特位允许重复使用,如’10101’中的中间比特1即可以与前面的’01’组成’101’,也可以与后面的’10’组成‘101’。
输入描述:
一个任意十进制int型整数。
输出描述:
2 0
# include <iostream>
# include <string>
using namespace std;
int main(){
string s;
int n,count=0,first=-1;
cin>>n;
for(int a = n;a;a=a/2){ //将整形数据转化为一个二进制字符
s=s+(a%2?'1':'0');
}
if(s.length()<3){
cout<<"0 -1"<<endl;
return 0;
}
for(int a=0;a<s.length()-2;a++){ //固定比特流的查找
if(s[a]=='1'&&s[a+1]=='0'&&s[a+2]=='1'){
if(first==-1){
first=a;
}
count++;
}
}
if(count==0){
cout<<"0 -1"<<endl;
return 0;
}
cout<<count<<' '<<first<<endl;
return 0;
}