1. 程式人生 > 實用技巧 >Codeforces Round #667 (Div. 3) A.Yet Another Two Integers Problem

Codeforces Round #667 (Div. 3) A.Yet Another Two Integers Problem

題目:

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
inputCopy
6
5 5
13 42
18 4
1337 420
123456789 1000000000
100500 9000

outputCopy
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).

題意:就是給兩個數,然後從1-10中任意選擇一個數來加給a或者a減去這個數k,最後a與b相等,求操作的次數。一開始題意被我翻譯錯了,以為每次必須用不同的值進行加或減,英語菜的一比...

題解:主要就是貪心,看一共有幾次可以直接用10進行加減的就用10,並算出所需的次數。剩下小於10的就用1-9的數就行,也就是次數加1.

AC程式碼:


#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<string.h>
#include<math.h>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 7;
const int maxm = 2e5 + 7;
const long long inf = 0x3f3f3f3f;
const long long mod = 1e9 + 7;
int t;
int main()
{
	LL a, b;
	ios::sync_with_stdio(false);
	cin >> t;
	while(t--)
	{
		LL cnt = 0, ans = 0;
		cin >> a >> b;
		cnt = abs(a - b) % 10;
		ans = abs(a - b) / 10;
		if(cnt > 0) ans ++; 
		cout << ans << endl;	
	}
	return 0;
}