試試水。先來(lái)一道水題。 總時(shí)間限制: 1000ms 內(nèi)存限制: 65536kB 描述 雇傭兵的體力最大值為M,初始體力值為0、戰(zhàn)斗力為N、擁有X個(gè)能量元素。
當(dāng)雇傭兵的體力值恰好為M時(shí),才可以參加一個(gè)為期M天的戰(zhàn)斗期,戰(zhàn)斗期結(jié)束體力值將為0。在同一個(gè)戰(zhàn)斗期內(nèi),雇傭兵每連續(xù)戰(zhàn)斗n天,戰(zhàn)斗力就會(huì)上升1點(diǎn),n為當(dāng)前戰(zhàn)斗期開(kāi)始時(shí)的戰(zhàn)斗力。
一個(gè)戰(zhàn)斗期結(jié)束后,雇傭兵需要用若干個(gè)能量元素使其體力恢復(fù)到最大值M,從而參加下一個(gè)戰(zhàn)斗期。每個(gè)能量元素恢復(fù)的體力值不超過(guò)當(dāng)前的戰(zhàn)斗力。每個(gè)能量元素只能使用一次。
請(qǐng)問(wèn):雇傭兵的戰(zhàn)斗力最大可以到達(dá)多少。
輸入 一行包括三個(gè)整數(shù)M、N、X,相鄰兩個(gè)整數(shù)之間用單個(gè)空格隔開(kāi)。M、N、X均為不超過(guò)10000的正整數(shù)。 輸出 輸出一個(gè)整數(shù),為雇傭兵的最大戰(zhàn)斗力。 樣例輸入 5 2 10 樣例輸出 6
代碼如下:
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;int main(){ int m, n, x, t; cin >> m >> n >> x; while(m >= n && x > 0) { x -= m / n + 1; if (m % n == 0) x++; if(x<0) break; n += m / n; } cout << n <<endl;}思路:循環(huán)主體中 能量減少(m/n向上取整) ,戰(zhàn)斗力增加(m/n向下取整),直到能量用完。
畢竟一道水題,思路挺簡(jiǎn)單,看懂題意就可以寫出來(lái)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注