C语言攀爬高山问题案例

题目描述

李聪明是一位热爱探险的少年,他总是不断的挑战各种各样的未知。这次,一个神秘的高山吸引了他。高山有 X 层台阶,每一层都充满了未知的危险和奇遇。李聪明每次可以选择攀爬 Y 层或者仅仅攀爬一层,但是由于高山的特殊魔力,每一次攀爬无论攀爬多少层,都会消耗掉一次机会。

现在,李聪明需要你的帮助来计划他的攀爬策略,以使得他能够以最少的次数到达第 X 层。请你帮助他吧!(毕竟他是聪明!!不想计算很正常)

输入

首先输入一个整数 T,表示有 T 组数据。 接下来有 T 行,每行包含两个整数 X 和 Y,表示需要攀爬的塔层数和每次可以攀爬的最大层数。 数据范围:1≤T≤500,1≤X,Y≤100。

输出

输出 T 行,每行一个整数,表示李聪明需要的最少的攀爬次数。

样例输入

4

4 2

8 3

3 4

2 1

样例输出

2

4

3

2

提示

样例 1:李聪明需要攀爬到第 4 层,每次可以爬 2 层,因此李聪明可以两次都爬 2 层,所以需要 2 次。

样例 2:李聪明需要攀爬到第 8 层,每次可以爬 3 层,李聪明可以先爬 3 层再爬 3 层,剩下的 2 层只能每次爬 1 层,所以共需 4 次。

样例 3:李聪明需要攀爬到第 3 层,每次可以爬 4 层,虽然每次可以爬的层数多,但李聪明只需要爬到第 3 层,所以他每次都只能爬 1 层,因此需要 3 次。

样例 4:李聪明需要攀爬到第 2 层,每次只能爬 1 层,因此李聪明需要攀爬 2 次。

解决办法

根据以上思路,我们可以编写如下的 C代码来解决这个问题:

#include <stdio.h>
 
int main() {
    int T;
    scanf("%d", &T);
 
    for (int i = 0; i < T; i++) {
        int X, Y;
        scanf("%d %d", &X, &Y);
 
        int count = 0;
        while (X > 0) {
            if (X - Y >= 0) {
                X -= Y;
            } else {
                X--;
            }
            count++;
        }
 
        printf("%d\n", count);
    }
 
    return 0;
}

运行截图

图片[1]-C语言攀爬高山问题案例-QQ沐编程

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞6赞赏 分享