題目描述
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 #天數遞增