import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int input = 0;
int counter = 0;
int max=0;
while (sc.hasNext()){
counter=0;
max=0;
input=sc.nextInt();
while (input!=0){
if(input-input/2*2==1){
input=(input-1)/2;
counter++;
if(max<counter){
max=counter;
}
}else {
input/=2;
counter=0;
}
}
System.out.println(max);
}
}
}先上代码。和求1个数的题比较像,但是此题目略有不同,是要求连续的1的个数。那么只需要当出现1时计数器自增,出现0时计数器清零,使用max变量更新已经出现的最大的连续个数即可。还是使用了除2取余法来计算出现的1的个数。

京公网安备 11010502036488号