Fancy Signal Translate
solution:长度为i的不同串有2^i个,则没出现的长度最短的串长度不会超过18,那么枚举长度不超过18的串,转换成10进制,打上标记,那么没被标记的最短串长度即为答案。
#include<bits/stdc++.h>
using namespace std;
int vis[1000005];
char s[1000005];
int main(){
ios::sync_with_stdio(false);
scanf("%s",s+1);
int l=strlen(s+1);
for(int i=1;i<=l;i++){
int res=s[i]-'0';
for(int j=1;j<=18&&i+j<=l;j++){
vis[res]=1;
res=res*2+s[i+j]-'0';
}
}
for(int i=0;;i++){
if(!vis[i]){
int ans=0;
while(i){
ans++;
i/=2;
}
printf("%d\n",ans);
break;
}
}
return 0;
}