#快速找到最小步数

You are given two positive integers aa and bb. In one move you can increase aa by 11 (replace aa with a+1a+1). Your task is to find the minimum number of moves you need to do in order to make aa divisible by bb. It is possible, that you have to make 00 moves, as aa is already divisible by bb. You have to answer tt independent test cases.

Input
The first line of the input contains one integer tt (1≤t≤1041≤t≤104) — the number of test cases. Then tt test cases follow.

The only line of the test case contains two integers aa and bb (1≤a,b≤1091≤a,b≤109).

Output
For each test case print the answer — the minimum number of moves you need to do in order to make aa divisible by bb.

Example
Input
5
10 4
13 9
100 13
123 456
92 46
Output
2
5
4
333
0
题意是首先给你一个k,是多少测试数据,接着就有k组数据,并让你判断a是否能被b整除,如果不能,只能找比a大且是与a差值最小的数,它们的差就是步数。
我的方法是先判断a是否能被b整除,能得话就输出0,不能得话找道a/b+1,这就是大于a且能被b整除的数,(a/b+1)*b-a即为所求。
以下是代码:

#include<stdio.h>
int main()
{
	int k;
	scanf("%d",&k);
	while(k--)
	{
		int m,n;
		scanf("%d %d",&m,&n);
		int i,j,k,l;
		if(m%n==0)
		printf("0\n");
		else
		{
			i=m/n+1;
			j=n*i-m;	
			printf("%d\n",j);		
		}
	}
	return 0;
}
发布了18 篇原创文章 · 获赞 0 · 访问量 210

猜你喜欢

转载自blog.csdn.net/qq_46304792/article/details/105165923
今日推荐