| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1435 人关注过本帖
标题:一道关于循环的问题。
只看楼主 加入收藏
Eternity丶
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-6-25
结帖率:0
收藏
已结贴  问题点数:10 回复次数:1 
一道关于循环的问题。
描述
雇佣兵的体力最大值为M,初始体力值为0、战斗力为N、拥有X个能量元素。

当雇佣兵的体力值恰好为M时,才可以参加一个为期M天的战斗期,战斗期结束体力值将为0。在同一个战斗期内,雇佣兵每连续战斗n天,战斗力就会上升1点,n为当前战斗期开始时的战斗力。

一个战斗期结束后,雇佣兵需要用若干个能量元素使其体力恢复到最大值M,从而参加下一个战斗期。每个能量元素恢复的体力值不超过当前的战斗力。每个能量元素只能使用一次。

请问:雇佣兵的战斗力最大可以到达多少。

输入
一行包括三个整数M、N、X,相邻两个整数之间用单个空格隔开。M、N、X均为不超过10000的正整数。
输出
输出一个整数,为雇佣兵的最大战斗力。


#include <iostream>
using namespace std;
int main()
{
    int M,N,X;
    cin>>M>>N>>X;
    do
        {
            if(N>M) break;
            if(X<M)
            {
                N=N+1;
                break;
            }
            else
            {
                    N=M/N+N;
                    X=X-M;
            }
        } while(X>=0);
    cout<<N;
    return 0;
}
总是不对,哪里有问题?
搜索更多相关主题的帖子: 元素 最大值 雇佣兵 战斗力 
2017-06-25 19:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
X=X-M; 这表示1个能量元素恢复1点体力吗?但原文是“每个能量元素恢复的体力值不超过当前的战斗力”

整个说明看得迷迷糊糊,而且连个例子也没有。
只能按照我的理解写一个,仅供参考
程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    unsigned M, N, X;
    cin >> M >> N >> X;

    while( M>=N && X>=(M+N-1)/N )
    {
        N += M/N;
        X -= (M+N-1)/N;
    }

    cout << N << endl;
    return 0;
}

2017-06-26 08:56
快速回复:一道关于循环的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016510 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved