CF1311A. Add Odd or Subtract Even题解

description:

  • 给定两个整数 a , b a,b a,b
  • 每次你可以将 a a a 加上一个奇数或者减去一个偶数。
  • 问你将 a a a 变成 b b b 的最少次数。
  • 多组数据,数据组数不多于 1 0 4 10^4 104 1 ≤ a , b ≤ 1 0 9 1\le a,b\le 10^9 1a,b109
  • translate by @ShineEternal。

solution:

我们发现,最多进行两次操作即可达成目标,我们分别讨论 0 , 1 , 2 0,1,2 0,1,2 三种情况:

  • 0 : 0: 0: 两个数相等。
  • 1 : a 1:a 1:a 加上一个奇数为 b b b 或者 a a a 减去一个偶数为 b b b
  • 2 : 2: 2: 剩下的情况,因为我们总能通过一次预备操作转换为上面 1 1 1 那种模型。

code:

#include
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;
} 

你可能感兴趣的:(codeforces刷题题解)