题目链接:7-17 爬动的蠕虫
一. 题目
1. 题目
2. 输入输出样例
3. 限制
二、代码
1. 代码实现
#include <stdio.h>int main(void) {unsigned int n, u, d;unsigned int minute, high;if (scanf("%d %d %d", &n, &u, &d) != 3) {return -1;}high = u; //先上爬uminute = 1; //耗时1分钟while (high < n) {high += u - d; // 先滑落d, 再上爬u, 即 high = high - d + uminute += 2; // 下落1分种,上爬1分钟,共2分钟}printf ("%d\n", minute);return 0;
}
2. 提交结果
三、总结
- 先爬1分钟,再采用先下落后上爬的方式,从而满足只要头部到达顶部就结束的要求
- 蠕虫的长度没有用
四、拓展
1. 条件改变
不对分钟进行取整,精确到小数点后2位
2. 代码实现
#include <stdio.h>int main(void) {unsigned int n, u, d;unsigned int high;float minute;if (scanf("%d %d %d", &n, &u, &d) != 3) {return -1;}high = u; //先上爬uminute = 1; //耗时1分钟while (high < n) {high += u - d; // 先滑落d, 再上爬u, 即 high = high - d + uminute += 2; // 下落1分种,上爬1分钟,共2分钟}if (high > n) {minute -= (high - n) * 1.0 / u; // 减掉多爬的时长}printf ("%.2f\n", minute);return 0;
}