题解:P5720 【深基4.例4】一尺之棰

· · 题解

题意

题目给定一个数字,让你对其不停除以 2,并且向下取整。问几次操作后可以得到 1

思路

我们要使用一个不同于 for 的循环,它的名字叫做 while

它的语法如下:

while(/**/) {
    /**/;
    /**/;
}

第一行内所填入的是一个 bool 类型的参数,在每一次操作前,若这个变量为真,那么进行大括号内的操作,否则跳出循环。

需要注意的是,括号内的参数是运行的条件而不是退出循环的条件

那么我们来“翻译”一下题目:如果变量 a 大于 1,那么将 a 除以 2,并向下取整。

想懂这个后就可以开始写代码了。

代码

#include<iostream>
using namespace std;

int main() {
    long long n, ans = 1; // 需要注意的是,答案的初始值应该设置为 1
    cin >> n;
    while(n > 1) {// while 循环
        ans++;
        n /= 2; 
    }
    cout << ans;
    return 0;
}