最后的答案不是1就是2,具体分析如下
2026-09-11 09:13:53
发布于:贵州
3阅读
0回复
0点赞
输入的一组数据假设为x和k两个数,目标是最少步数,那我们就优先看能不能一次走完,然后依次累加。
情况一:
如果能一次走完,那么走的步数一定是x,即x%k!=0;
情况二:
如果不能一次走x步,那我们就把x拆成1+(x-1),分两次走:即第一次跳1,第二次跳x-1;
由于x是k的倍数,那么x-1一定不是k的倍数,x−1除以k的余数是 k−1,不等于0。因此如果一次不能走完,那么最终两次也可以走完。最小步数不可能大于2。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t--){
int x, k;
cin >> x >> k;
if(x % k != 0){
cout << 1 << endl;
}
else{
cout << 2 << endl;
}
}
return 0;
}
这里空空如也







有帮助,赞一个