Files
hanyixuanten 47e9acfb6a
Check cpp / md pair / Check md headers (push) Successful in 5s
new file: P7458.cpp
2026-10-29 14:58:30 +00:00

33 lines
706 B
C++

#include<bits/stdc++.h>
using namespace std;
long long a;
int minans = INT_MAX;
int n;
void dfs(int now, int pre_k, long long now_a) {
if(now > 6 || now >= minans) {
return;
}
if(now_a == (1ll << n) - 1) {
minans = min(minans, now);
}
for(int k = pre_k; k <= n; ++k) {
long long new_a = now_a | (now_a >> k);
if(new_a > now_a) dfs(now + 1, k, new_a);
}
}
int main() {
char s[45];
scanf("%s", s + 1);
if(s[1] == '0') {
printf("-1\n");
return 0;
}
n = strlen(s + 1);
for(int i = 1; i <= n; ++i) {
a *= 2;
if(s[i] == '1') a += 1;
}
dfs(0, 1, a);
printf("%d\n", minans);
return 0;
}