思路
- 将10进制转为2进制,将其存到数组中
- 利用移位统计1的个数,不断更新最大值
- 循环完毕输出最大值
Answer
#include<stdio.h>
int main() {
int val;
int cnt = 0;
int num[1000];
while (scanf("%d", &val) != EOF) {
while (1) {//将10进制转为2进制并存到数组中
if (val == 1) {
num[cnt++] = 1;
break;
}
if (val % 2 == 1) {
num[cnt++] = 1;
} else {
num[cnt++] = 0;
}
val /= 2;
}
int j = 0;
int max = 0;
//统计1的个数
for (int i = 0; i < cnt; i++) {
if (num[i] & 0x01) {
j++;
if (j > max) {
max = j;
}
} else {
j = 0;
}
}
printf("%d", max);
}
return 0;
}