A - Yet Another Two Integers Problem ACM

墨海灬流弈發表於2020-12-06

You are given two integers a and b.

In one move, you can choose some integer k from 1 to 10 and add it to a or subtract it from a. In other words, you choose an integer k∈[1;10] and perform a:=a+k or a:=a−k. You may use different values of k in different moves.

Your task is to find the minimum number of moves required to obtain b from a.

You have to answer t independent test cases.

Input
The first line of the input contains one integer t (1≤t≤2⋅10的4次方) — the number of test cases. Then t test cases follow.

The only line of the test case contains two integers a and b (1≤a,b≤10的9次方 ).

Output
For each test case, print the answer: the minimum number of moves required to obtain b from a.

Example

Input

6
5 5
13 42
18 4
1337 420
123456789 1000000000
100500 9000

Output

0
3
2
92
87654322
9150

Note

In the first test case of the example, you don’t need to do anything.

In the second test case of the example, the following sequence of moves can be applied: 13→23→32→42(add 10, add 9, add 10).

In the third test case of the example, the following sequence of moves can be applied: 18→10→4(subtract 8, subtract 6).

這題的大概意思是給出n組資料,每組有兩個數,有更改a的機會,一次可以增加或減少a一到十的數字(a±(1,10)),看需要幾次可以變成b。

那麼這題我們可知只需要計算次數,那就拿最大值減最小值,看需要變換幾個10(差為432的時候可以當作43次,最後的2也是一次)。最後附上程式碼。

#include<iostream>
using namespace std;
int main()
{
	long long int n,i,m,num;
	cin>>n;
	long long int a[n][2],b[n];
	for(i=0;i<n;i++)
	{
		num=0;
		cin>>a[i][0]>>a[i][1];	
		if(a[i][0]>a[i][1])//排序確保最大值減最小值
		{
			m=a[i][0];a[i][0]=a[i][1];a[i][1]=m;
		}
		m=a[i][1]-a[i][0];//得出差值
		num=m/10;//計算次數
		if(m%10!=0)//如果有小於10的也按一次計算
		{
			num++;
		}
		b[i]=num;
	}
	for(i=0;i<n;i++)
	{
		cout<<b[i]<<endl;
	}
	return 0;	
} 

相關文章