1. 问题描述:
给定两个整数 a 和 b。每次操作可以将 a 增加 1。请问,最少几次操作以后 a 就能够被 b 整除。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。每组数据占一行,包含两个整数 a 和 b。
输出格式
每组数据输出一行结果,表示最少操作次数。
数据范围
前三个测试点满足,1 ≤ T ≤ 5。
所有测试点满足,1 ≤ T ≤ 10 ^ 4,1 ≤ a,b ≤ 10 ^ 9。
输入样例:
5
10 4
13 9
100 13
123 456
92 46
输出样例:
2
5
4
333
0
来源:https://www.acwing.com/problem/content/3790/
2. 思路分析:
分析题目可以知道我们可以求解出a至少是b的多少倍才可以大于等于a,也即求解出a / b向上取整的倍数k,然后k * b - a就是答案了。
3. 代码如下:
class Solution:
def process(self):
T = int(input())
for i in range(T):
a, b = map(int, input().split())
# a / x向上取整等于 (a + x - 1) / k向下取整
k = (a + b - 1) // b
print(max(0, b * k - a))
if __name__ == '__main__':
Solution().process()