牛牛是励志成为世界第一宝可梦大师的宝可梦训练家。现在他遇到了一个强劲的野生宝皮卡丘,野生宝皮卡丘的生命值是HP,攻击力是ACK,牛牛召唤的宝可梦是杰尼龟。杰尼龟的生命值是HP2,攻击力是ACK2,除此之外身为训练家还可以给宝可梦吃药让他满血复活(吃药发生在双方发动攻击之前,并且吃药一方不得在本回合发动攻击)。
牛牛想知道他最少多少回合才能能打败野生宝皮卡丘?
因为皮卡丘会电光一闪,所以皮卡丘总是比杰尼龟先发动攻击。若能成功击败野生皮卡丘则返回最少回合数,否则返回-1。
8,3,8,1
14
至少需要14回合战胜野生皮卡丘
1,1,1,1
-1
皮卡丘先出招就直接打死了杰尼龟,所以无法获胜
import math class Solution: def Pokemonfight(self , HP , ACK , HP2 , ACK2 ): # write code here #打不过 if ACK>=HP2: return -1 if 2*ACK>=HP2 and ACK2<HP: return -1 #站撸能过 if (math.ceil(HP2/ACK)-1)*ACK2>=HP: return math.ceil(HP/ACK2) #回血锤它 damage_f=(math.ceil(HP2/ACK)-2)*ACK2 if HP%damage_f==0: return (HP/damage_f-1)*(math.ceil(HP2/ACK)-1)+(HP%damage_f)/ACK2 else: return int(HP/damage_f)*(math.ceil(HP2/ACK)-1)+(HP%damage_f)/ACK2