- 记住关于位运算得模板。
- 每次向右移,然后对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; }