3040. 非重复二进制串

徐摆渡
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
int T, cnt;
stack<int> myStack;
int a[100];
void getBinary(ll num)
{
    while(num)
    {
        myStack.push(num%2);
        num/=2;
    }
}
int main()
{
    cin>>T;
    while(T--){
        ll num;
        cin>>num;
        getBinary(num);
        int l=0;
        while(!myStack.empty()){
            a[l++]=myStack.top();
            myStack.pop();
        }
        int len=1;
        int maxi=len;
        for(int i=1;i<l;++i){
            if(a[i]!=a[i-1]) len++;
            else {
                if(a[i]==0) {
                    len=0;
                    continue;
                }
                else len=1;
            }
            if(maxi<len) maxi=len;//after every loop, if true, we update maxi
        }
        printf("case #%d:\n",cnt++);
        cout<<maxi<<endl;
    }
    return 0;
}
10152130230

哈哈是不是没ac本题有大坑
[em:08]

51174500037

好吧理解有误

51174500037

话说第三个数据是不是有问题啊,不是应该是3 么

10152130230

跪了,求大神提供错的测试数据

include

include

include

int cmp(const voida,const voidb)
{
return (int)b-(int)a;
}

int main()
{
int t,x,y,q[33],i=0,e;
scanf(“%d”,&t);
while(t–)
{
scanf(“%d”,&x);
y=0;
for(e=0;e<33;e++)
q[e]=1;
while(x/2)
{
if((x%2)!=((x/2)%2))
q[y]++;
else
y++;
x>>=1;
}
qsort(q,32,sizeof(q[0]),cmp);
printf(“case #%d:\n”,i);
printf(“%d\n”,q[0]);
}
return 0;
}

10175101245

case编号没有自加,t>1的所有数据都是WA……加上以后可以ac。

你当前正在回复 博客/题目
存在问题!