回合制游戏
回合制游戏
http://www.nowcoder.com/questionTerminal/17a083854661490e85e5bb6c4b26e546
题解:
题目难度:二星
考察点: 思维,数学
易错点:
C++中的除法是向下去整,也就是说当和均为整数时,只取整数部分,因此当全由构成时,其结果应该为,否则不能整除时就会少计算一个
解法:数学
当使用时,需要一个回合来蓄力,一个回合来攻击,需要两个回合。因此,当倍的都无法超过时,才使用,否则使用一定是更优的。如果全使用,则需要的次数为。如果全使用,则需要的次数。同时对于余数部分,分为3种情况,一种是直接整除,一种是一个可以完成,一种是需要才能完成。
#include "bits/stdc++.h" using namespace std; typedef long long LL; LL hp,normalAttack,buffedAttack; int main() { scanf("%lld%lld%lld",&hp,&normalAttack,&buffedAttack); if(normalAttack*2>=buffedAttack){ printf("%lld\n",(hp+normalAttack-1)/normalAttack); }else{ LL tmp=hp/buffedAttack*2; LL mod=hp%buffedAttack; if(mod<=normalAttack){ if(mod) tmp++; }else tmp+=2; printf("%lld\n",tmp); } return 0; }