BZOJ 1192: [HNOI2006]鬼谷子的钱袋 [娱乐]

时间:2023-03-08 20:03:08

题意:

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);
}