B-Magic Stick Educational Codeforces Round 76 (Rated for Div. 2)

Recently Petya walked in the forest and found a magic stick.
Since Petya really likes numbers, the first thing he learned was spells for changing numbers. So far, he knows only two spells that can be applied to a positive integer:
If the chosen number a is even, then the spell will turn it into 3a2;
If the chosen number a is greater than one, then the spell will turn it into a−1.Note that if the number is even and greater than one, then Petya can choose which spell to apply.
Petya now has only one number x. He wants to know if his favorite number y can be obtained from x using the spells he knows. The spells can be used any number of times in any order. It is not required to use spells, Petya can leave x as it is.
Input
The first line contains single integer T(1≤T≤104) — the number of test cases. Each test case consists of two lines.The first line of each test case contains two integers x
and y (1≤x,y≤109) — the current number and the number that Petya wants to get.
Output
For the i-th test case print the answer on it — YES if Petya can get the number y from the number x using known spells, and NO otherwise.You may print every letter in any case you want (so, for example, the strings yEs, yes, Yes and YES will all be recognized as positive answer).
Example
Input
7
2 3
1 1
3 6
6 8
1 2
4 1
31235 6578234
Output
YES
YES
NO
YES
NO
YES
YES

题意:输入一个x和y,如果x是一个偶数就可以变为3/2*a;或者是减1,减一是偶数奇数都可以的,问x可不可以通过这两种操作变为y;
首先,乘上3/2肯定会变大,如果一直乘就一直变大,减1是让这个数变小的,如果x大于四的话就可以一直变大,然后再减1变到y;如果x是3的话,就只能先减1变成2,然后再乘于3/2变为3,然后再变成2:如果x是2的话,可以乘于3/2变为3或者减1变成1

#include<iostream>
using namespace std;
typedef long long ll;
int main()
{
	int n;
	ll x,y;
	cin>>n;
	while(n--)
	{
		cin>>x>>y;
		if(x==y||x>=4) cout<<"YES"<<endl;
		else if((x==2||x==3)&&(y<=3)) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}
发布了31 篇原创文章 · 获赞 0 · 访问量 330

猜你喜欢

转载自blog.csdn.net/weixin_44828107/article/details/103226428
今日推荐