題目
輸入一個十進制整數n,判斷它二進制時 相鄰的兩個1 間距最大為多少?
如22,10110,1的間距分别為 2 1,故最大的為2.
#include<stdio.h>
#include<math.h>
int max(int a,int b){
if(a>b) return a;
else return b;
}
int n,num[32] = {1},ans,last;
int main(){
scanf("%d",&n);
//二進制轉換
for(int i=1;i<=30;i++){
num[i] = num[i-1]*2;
}
for(int i = 0;i<=30;i++){
if((n&num[i]) !=0){
last = i;
break;
}
}
for(int i =last +1;i<=30;i++){
if((n&num[i])!=0){
ans = max(ans,i-last);
last = i;
}
}
printf("%d",ans);
return 0;
}