题目链接:​​点击打开链接​

问题 H: 吃薯条

时间限制: 1 Sec   内存限制: 128 MB

提交: 500  

解决: 124

[​提交​​][​状态​​][​讨论版​​]


题目描述



薯片这次又遇到问题了==
薯片有n个薯条棒,第i个薯条棒的长度为i,由于薯片能瞬间移动,所以薯片能在1秒内从这n个薯条棒里面选择一个或者多个,吃掉同样长的一部分,
并且被吃掉部分的长度是正整数,问薯片至少多少时间能把这n个薯条棒都吃完?



输入



多组数据输入,每组数据第一行输入一个n(1<=n<=109).



输出



对于每组数据,输出最短的时间.



样例输入

3
4

样例输出

2
3


思路:每次找中间的开始吃啊

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
int main()
{
while(~scanf("%d",&n))
{
int ans=0;
while(n)
{
n>>=1;
ans++;
}
printf("%d\n",ans);
}
return 0;
}