当前位置:首页>python>Python编程题:31.P5720 【深基4.例4】一尺之棰

Python编程题:31.P5720 【深基4.例4】一尺之棰

  • 2026-10-14 22:20:14
Python编程题:31.P5720 【深基4.例4】一尺之棰

点击蓝字 关注我们

今天要做的是来自洛谷网站的P5720 【深基4.例4】一尺之棰。

https://www.luogu.com.cn/problem/P5720

有账号的可以上去做做。

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

题目描述

《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2,向下取整)。第几天的时候木棍的长度会变为 1?输入一个正整数 a,表示木棍长度。

输入格式

输入一个正整数 a,表示木棍长度。

输出格式

输出一个正整数,表示要第几天的时候木棍长度会变为 1。

输入输出样例

解题思路

反复地做一个动作:锯掉一半——循环结构。

什么时候结束?木棍长度为1.

学过for循环和while循环。本题具体循环几次是不知道的,所以优先选择while循环。将结束条件作为循环条件。

或者也可以利用while True进行无限循环,利用if判断是否木棍长度为1了,然后跳出循环。

需要输出结果是天数。没循环一次就是一天,可以用变量day来累计。

步骤拆解:

  1. 读取木棍长度a

  2. 初始化变量day

  3. while循环

  4. day加1 ,a除以2并向下取整

  5. 输出结果

知识点

  1. input()获取数据,int()转换为整数

  2. while True:无限循环

  3. 判断是否相等==

  4. 本题向下取整可以直接用//

参考代码

逐句解析

  1. n=int(input()):读取初始木棍长度,转为整数。

  2. day=1初始化天数,一开始就是第 1 天。:

  3. while n!=1:只要木棍长度还不等于 1,就一直循环切割。

  4. n=n//2 木棍长度除以 2,向下取整。

  5. day+=1:切割一次,天数加一天。

  6. print(day):长度变成 1,退出循环,输出天数。

while循环部分也可以用以下做法:

如果你觉得意犹未尽,那就趁热打铁,继续挑战一下吧!

  1. a=5,执行 a = a//2,a 的值为()

    A. 2.5     B. 2     C. 3     D. 1

2、小明手上有一份糖果,一共有 n 颗。每天晚上吃掉当前糖果数量一半再加 1 颗,吃到剩下 1 颗糖果 的时候就不再吃了。已知第一天糖果数量就是 n,请你求出吃到只剩 1 颗时,一共经过了多少天。

输入格式 :输入一个正整数 n。

输出格式 :输出一个整数,代表剩余 1 颗糖果时的天数。

最新文章

随机文章