题目描述
李聪明是一位热爱探险的少年,他总是不断的挑战各种各样的未知。这次,一个神秘的高山吸引了他。高山有 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;
}
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END