程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> OpenJudge 6042 雇傭兵,openjudge6042

OpenJudge 6042 雇傭兵,openjudge6042

編輯:C++入門知識

OpenJudge 6042 雇傭兵,openjudge6042


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天,所以他的戰斗力值不會增加

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved