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的大小。a<b时,判断b-a的差值的奇偶性。奇,则a加上一个奇数一步变为b。偶,a先加上一个奇数,后再加1变为b;a>b时,判断a-b的差值的奇偶性。奇,a减去一个偶数再减1,两步变为b。偶,a直接减一个偶数一步变为b;a=b时无需操作

AC代码

#include<iostream>
#include<algorithm>
#include<cmath>
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;}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

稚皓君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值