#include <iostream> #include <vector> using namespace std; int main() { int a; cin>>a; int cnt=0,c1=0; int num1[1000000],num2[1000000]; int g=1,p=0; //jingen while(g!=0) { g=a/2; p=a%2; a/=2; num1[cnt++]=p; } for(int i=cnt-1;i>=0;i--) { num2[c1++]=num1[i]; } int ma=0; for(int i=0;i<c1;i++) { if(num2[i]==1) { int j=i; int x=0; while(num2[j]==1) { x++; j++; } i=j-1; ma=max(ma,x); } } cout<<ma; return 0; }
可通过暴力解决,先循环使十进制数转化为二进制,并将其存储在数组里。再循环记录最长连续串参与链接