OpenJudge 6042 雇佣兵


37:雇佣兵

總時間限制: 
1000ms
 
內存限制: 
65536kB
描述

雇佣兵的體力最大值為M,初始體力值為0、戰斗力為N、擁有X個能量元素。

當雇佣兵的體力值恰好為M時,才可以參加一個為期M天的戰斗期,戰斗期結束體力值將為0。在同一個戰斗期內,雇佣兵每連續戰斗n天,戰斗力就會上升1點,n為當前戰斗期開始時的戰斗力。

一個戰斗期結束后,雇佣兵需要用若干個能量元素使其體力恢復到最大值M,從而參加下一個戰斗期。每個能量元素恢復的體力值不超過當前的戰斗力。每個能量元素只能使用一次。

請問:雇佣兵的戰斗力最大可以到達多少。

輸入
一行包括三個整數M、N、X,相鄰兩個整數之間用單個空格隔開。M、N、X均為不超過10000的正整數。
輸出
輸出一個整數,為雇佣兵的最大戰斗力。
樣例輸入
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天,所以他的戰斗力值不會增加


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM