005:僱傭兵
總時間限制:
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 <iostream>
using namespace std;
int main()
{
int M=0,N=0,X=0;
cin>>M>>N>>X;
while((X>0)&&(M>=N))
{
if(M%N==0)
{
X-=M/N;
}
else
{
X=X-M/N-1;
}
N+=M/N;
if(M<N) break;
if(X*N<M) break;
}
cout<<N<<endl;
return 0;
}