题解 CF1311A 【Add Odd or Subtract Even】

ShineEternal

2020-02-26 07:47:07

Solution

[更佳的阅读效果。](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; } ```