解题思路:
1. 我们需要每次消耗多少能量才能达到体力最大值?

每次消耗 m/n 个能量就会让体力达到最大值,体力最大值恒定不变为5 ;

但是由于我们每次消耗能量至少一个,所以实际上我们要让体力达到最大值需要消耗 ceil(m*1.0/n) 个能量,其中 ceil( ) 是向上取整函数【例如 ceil(2.06)==3 】,

因为 ceil( ) 的函数原型是 double ceil(double x),所以需要让 m/n 一定是浮点型,所以我用 [(m*1.0)/n] 确保 m/n 这个计算结果一定是浮点型(有小数点);

【 ceil( ) 函数需要头文件 #include<math.h> 】

【补充:C语言里面 除法 / 的规则:

                                                    1) 如果两个操作数类型不同,C语言会自动进行类型转换。

                                                    2) 如果两个操作数都是整数,结果也是整数,小数部分会被截断, 强制性转化为实际结果的最小整数 ,例如 5/6==0 。

                                                    3) 如果至少有一个操作数是浮点数,结果也是浮点数

2. 我们每次消耗完能量,然后去打架,打架过后,我们一共会增加多少战斗力?

一共增加 m/n 点战斗力,至于在打架过程中这个战斗力到底是怎么增加的,我们不管它, 我们只管结果

而且当我们如果在回复体力的过程中,使用的能量超过了初始能量值10 ,那么我们就不用在增加战斗力了,因为人家根本没有再次战斗,要体力达到最大值才会去战斗


注意事项: 解题思路里面已经讲清楚了注意事项

参考代码:

#include<stdio.h>

#include<math.h>

int main ( )

{

    int  m=0 ,x =0 ,n=0 ;

    scanf("%d %d %d", &m ,&n ,&x ) ;

    while ( x>0 )

        {

           x=x-ceil(1.0*m/n);

           if ( x<0 ) break ;

           n=n+m/n ;

        }

    printf("%d",n) ;

    return 0 ;

}


点赞(0)
 

0 分

0 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论