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;
}
上一篇:【ACWing】667. 游戏时间


下一篇:Alibaba首发667页MyBatis源码手册,看后发现差距何止一点点!