- 记住关于位运算得模板。
 - 每次向右移,然后对1与操作。然后别忘了,右移之后要跟新num。
 - 全局max可以参考使用。具体看注释
 
#include<bits/stdc++.h>
using namespace std;
int main(){
    int num;
    while(cin>>num){
        int res =0;
        int cur = 0;
        while(num){
            int n = num&1; //最低位得结果
            num = num >>1;
            if(n){
               cur++;//向前移动一位
            }else{
               cur = 0;//否则变成0
            }
            res = max(res,cur);//1. 刚开始移动是可以逐渐变化res得,后期如果出现了中断,那么除非cur大于res,否则res不更新
        }
        cout<<res<<endl;
    }
    return 0;
}

京公网安备 11010502036488号