xtuoj Binary
题目

思路
二进制的话就用位运算的知识比较方便,&就是按位与,&1就是判断最后一位的二进制是否为1,如果是len++,如果不是,则断掉了,len=0,同时记录当前最大的len,然后n>>=1,n右移一位,继续处理下一位,当n==0时,结束循环,也全部转换为二进制了,输出max即为答案,注意不要用int,否则它会显示超时,所以我换成long long就对了。
代码
#include<stdio.h>
#define ll long longint K;
ll n,len,max;int main(){scanf("%d",&K);while(K--){scanf("%lld",&n);len=0,max=0;while(n){if(n&1) len++;else len=0;n>>=1;if(len>max) max=len;}printf("%lld\n",max);}return 0;
}