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的个数。