C++ 僱傭兵

lilyxiaoyy發表於2024-03-11
描述

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

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

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

請問:僱傭兵的戰鬥力最大可以到達多少。

輸入
一行包括三個整數M、N、X,相鄰兩個整數之間用單個空格隔開。M、N、X均為不超過10000的正整數。
輸出
輸出一個整數,為僱傭兵的最大戰鬥力。
樣例輸入
5 2 10
樣例輸出
6

#include<bits/stdc++.h>
using namespace std;
int main()
{
int m, n, x, t;
cin>>m>>n>>x;
while(x >= t)
{
x = x - ceil(1.0*m/n); // (m/n)向上取整數為恢復體力到M所消耗的能量數
n = n + m/n; // (m/n)向下取整數為一個戰鬥週期戰鬥力增加的數量
t = ceil(1.0*m/n); //每恢復滿體力1次,能量就會消耗[(m/n)向上取整數]的量
}
cout<<n;
return 0;
}

相關文章