解题思路:
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复