雇傭兵的體力最大值為M,初始體力值為0、戰斗力為N、擁有X個能量元素。
當雇傭兵的體力值恰好為M時,才可以參加一個為期M天的戰斗期,戰斗期結束體力值將為0。在同一個戰斗期內,雇傭兵每連續戰斗n天,戰斗力就會上升1點,n為當前戰斗期開始時的戰斗力。
一個戰斗期結束後,雇傭兵需要用若干個能量元素使其體力恢復到最大值M,從而參加下一個戰斗期。每個能量元素恢復的體力值不超過當前的戰斗力。每個能量元素只能使用一次。
請問:雇傭兵的戰斗力最大可以到達多少。
5 2 10
6
#include<cstdio> #include<iostream> #include<cmath> using namespace std; int n,m,x,engry; int main() { scanf("%d%d%d",&m,&n,&x); engry=n;//engry代表當前戰斗力 while(engry<=m&&x) { x-=ceil(double (m)/engry); if(x<0) break; engry+=floor(double (m)/engry); } cout<<engry; }
思路:如果剛開始他的戰斗力大於m ,那麼戰斗m天湊不夠n天,所以他的戰斗力值不會增加