https://codeforces.com/contest/1311
A. Add Odd or Subtract Even(奇数加偶数减)
已知两个正整数a和b。
你可以通过以下方式改变 a:选择任意正奇数x (x>0),用a+x代替a;选择任意正偶数y (y>0),用y代替a。您可以执行任意数量的此类操作。你可以在不同的移动中选择相同的数字x和y。
目的是找出从a中得到b所需要的最小步数。保证总能从a中得到b。
要求回答t个独立的测试用例。
输入
输入的第一行包含一个整数t(1≤t≤10^4)即测试用例的数量。
接着t个测试用例如下。
每个测试用例均以两个以空格分隔的整数a和b(1≤a,b≤10^9)。
输出
对于每个测试用例,输出获得b所需的最小移动数,确保始终可以从a获得b。
样例
Input
5
2 3
10 10
2 4
7 4
9 3
Output
1
0
2
2
1
#include<iostream> #include<cmath> #include<algorithm> #define M 10005 using namespace std; int main() { int t,a[M],b[M],times[M],temp; cin>>t; for(int i=0;i<t;i++) { cin>>a[i]>>b[i]; if(a[i]>b[i]) { temp=a[i]-b[i]; if(temp%2==0) times[i]=1; //a、b的差若能整除2,直接减a、b差值的偶数 else times[i]=2; } if(a[i]<b[i]) { temp=b[i]-a[i]; if(temp%2==0) times[i]=2; //a、b的差若能整除2,便减一个奇数使其差变为偶数 else times[i]=1; //也能理解为加一个偶数再减一个奇数 } if(a[i]==b[i]) times[i]=0; } for(int i=0;i<t;i++) cout<<times[i]<<endl; return 0; }
锁在家打CF真的是
无言独上西楼,月如钩,寂寞梧桐深院锁清“春”。
加油