题意:
n个数分组,使得小于n的每个数都能表示出来,最少几组
就是“最优集合”的超级弱化版.....每次+=now+1
然后一个貌似科学的方法是n二进制拆分
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n, cnt, now;
int main() {
n=read();
while(now < n) cnt++, now += now + ;
printf("%d", cnt);
}