题目描述
Serika 非常喜欢捏她的玩偶,她第一天会捏一下,第二天也会也会捏一下,而在第 i ( i
3 ) 天,如果她在前 i -1 天一共捏了 k 下,那么她会在这一天捏向下取整
下。
Senri 发现 Serika 的玩偶质量非常差,如果它从第一天算起被捏的次数总共 > x 次,那么它就会坏掉。
现在 Senri 想知道 Serika 的玩偶会在第几天坏掉。
输入描述
第一行一个整数 x (1
x
)。
输出描述
一个整数,表示玩偶会在第几天坏掉。
样例输入 1
23
样例输出 1
9
思路解析:
本来我是使用的递归的方法解决本题的,但是结果非常令人失望,总是显示异常,大概就是递归的深度太过深,编译都不能通过,所以就改变了策略。可以看到,x >= 1,那么天数 i 势必会 >= 2,所以即从sum = 2 ,i = 2,开始算起,后面的就是逐一判断就行了。
具体代码如下:
import math #使用math模块是为了使用其中的向下取整函数math.floor()
x = eval(input())
sum = 2 #初始设定均为2,sum为捏的次数和
i = 2 #天数
while True: #设置为死循环
if sum > x :
print(i)
break
else:
sum += math.floor(sum//2) #求向下取整的数字的同时求取和进行下一步的判断
i += 1 #天数递增