题目描述
《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2,向下取整)。第几天的时候木棍的长度会变为 1?
输入格式
输入一个正整数 a,表示木棍长度。
输出格式
输出一个正整数,表示要第几天的时候木棍长度会变为 1。
输入输出样例
输入 #1
100
输出 #1
7
作者正常做法:
#include<iostream>
using namespace std;
int main()
{
int a;
cin>>a;
int cnt=0;
while(a>1)
{
cnt++;
int b=a/2;
a=b;
}
cout<<cnt+1<<endl;
return 0;
}
洛谷题解做法:
#include<bits/stdc++.h>//万能头不解释
using namespace std;//命名空间不解释
long long a,cnt;//注意10^9要开long long
int main()
{
cin>>a;
while(a!=1)//如果据到只剩1则跳出
a=ceil(a/2),cnt++;//cnt计数器累加天数
cout<<cnt+1;//注意砍木头是从第2天开始的,所以要用cnt+1表示结果,这也可能是本题唯一的坑处
return 0;
}
//@btng_smith666