A. Add Odd or Subtract Even

传送门
A. Add Odd or Subtract Even
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given two positive integers a and b In one move, you can change a in the following way:
Choose any positive odd integer x(x>0) and replace a with a+x
choose any positive even integer y(y>0) and replace a with a−y
You can perform as many such operations as you want. You can choose the same numbers x and y in different moves.Your task is to find the minimum number of moves required to obtain b from a. It is guaranteed that you can always 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≤104) — the number of test cases.Then t test cases follow. Each test case is given as two space-separated integers a and b (1≤a,b≤109).

Output
For each test case, print the answer — the minimum number of moves required to obtain b from a if you can perform any number of moves described in the problem statement. It is guaranteed that you can always obtain b from a
Example
Input

5
2 3
10 10
2 4
7 4
9 3

Output

1
0
2
2
1

Note
In the first test case, you can just add 1
In the second test case, you don’t need to do anything.
In the third test case, you can add 1two times.
In the fourth test case, you can subtract 4 and add 1
In the fifth test case, you can just subtract 6

题意:输入t组测试样例,输入a,b;a变为b需要多少步骤。a的变化有两种,可以通过减去一个正奇数,或者通过加上一个正偶数。

思路:答案只有0,1,2;先判断a与b的大小。ab时,判断a-b的差值的奇偶性。奇,a减去一个偶数再减1,两步变为b。偶,a直接减一个偶数一步变为b;a=b时无需操作

AC代码

#include
#include
#include
using namespace std;
int main()
{
int a,b,t;
cin>>t;
for(int i=0;i<t;i++)
{cin>>a>>b;
if(a>b)
{if((a-b)%2==1)
cout<<"2"<<endl;
else cout<<"1"<<endl;}
else if(a<b)
{if((b-a)%2==1)
cout<<"1"<<endl;
else cout<<"2"<<endl;}
else {cout<<"0"<<endl;}}
return 0;}

你可能感兴趣的:(codeforces)