整除问题
题目描述
一共有
t
t
t 组测试样例,每组样例给定两个正整数
a
a
a 和
b
b
b 。你可以一步将
a
a
a 增加 11 (将
a
a
a 替换为
a
+
1
a+1
a+1 )。你的任务是找出要使
a
a
a 被
b
b
b 整除所需的最少步数。有可能你只需要进行 00 步移动,因为
a
a
a 已经可以被
b
b
b 整除。
输入格式
输入的第一行包含一个整数
t
t
t ( 1≤
t
t
t ≤
1
0
4
10^4
104 )——测试用例的数量。然后是
t
t
t 组测试用例。测试用例的唯一行包含两个整数
a
a
a 和
b
b
b ( 1≤
a
a
a ,
b
b
b ≤
1
0
9
10^9
109 )。
输出格式
对于每组测试用例,输出一行答案——为了使 a 能被 b 整除,你需要做的最少步数。
样例 #1
样例输入 #1
5
10 4
13 9
100 13
123 456
92 46
样例输出 #1
2
5
4
333
0
提示
样例第一行输入为 5 ,表示该组样例共有 5 个测试样例。
第一个测试样例
a
a
a 为 10 ,
b
b
b 为 4 ,
a
a
a 经过 4 步之后变为 14 ,才能被 4 整除,所以答案输出 4。
第二个测试样例
a
a
a 为 13 ,
b
b
b 为 9 ,
a
a
a 经过 5 步之后变为 18 ,能被 9 整除,所以输出 5。
在这里插入代码片#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int a, b;
cin >> a >> b;
int steps = 0; // 记录移动的步数
// 特判 a 已经能够被 b 整除的情况
if (a % b == 0) {
cout << "0" << endl;
continue;
}
// 当 a 不能被 b 整除时,需要计算最少移动多少步
int r = a % b; // 计算余数
steps = b - r; // 计算移动的步数
cout << steps << endl;
}
return 0;
}