题目链接:点击打开链接
问题 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;
}