考点:位运算
解题思路:定义count,将二进制的最后一位与上1,结果为1时,count++,然后将二进制右移一位,再进行上步操作。当结果为0时,将count置为0,但是此时如何保存先前的count值呢?我们可以再定义一个modcount来保存之前记录的count值,再次遇到0时,将此时的count值与modcount值进行比较(这里将用到库函数,Math.max()),保留大的值。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
int n = scan.nextInt();
int count = 0;
int modconut = 0;
while(n != 0){
if((n&1)==1){
count++;
modconut=Math.max(count,modconut);
}else{
count = 0;
}
n>>=1;
}
System.out.println(modconut);
}
}
}