题解 CF1311A 【Add Odd or Subtract Even】
ShineEternal
2020-02-26 07:47:07
[更佳的阅读效果。](https://blog.csdn.net/kkkksc03/article/details/104504066)
## description:
- 给定两个整数 $a,b$。
- 每次你可以将 $a$ 加上一个奇数或者减去一个偶数。
- 问你将 $a$ 变成 $b$ 的最少次数。
- **多组数据**,数据组数不多于 $10^4$, $1\le a,b\le 10^9$。
- translate by @[ShineEternal](https://www.luogu.com.cn/user/45475)。
## solution:
我们发现,最多进行两次操作即可达成目标,我们分别讨论 $0,1,2$ 三种情况:
- $0:$ 两个数相等。
- $1:a$ 加上一个奇数为 $b$ 或者 $a$ 减去一个偶数为 $b$。
- $2:$ 剩下的情况,因为我们总能通过一次预备操作转换为上面 $1$ 那种模型。
## code:
```cpp
#include<cstdio>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
long long a,b;
scanf("%lld%lld",&a,&b);
long long c=b-a;
if(c==0)
{
printf("0\n");
continue;
}
if(c<0)
{
c=-c;
if(c%2==1)
{
printf("2\n");
}
else
{
printf("1\n");
}
}
else
{
if(c%2==1)
{
printf("1\n");
}
else
{
printf("2\n");
}
}
}
return 0;
}
```