B. Magic Stick
Recently Petya walked in the forest and found a magic stick.c++
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:app
If the chosen number 𝑎 is even, then the spell will turn it into 3𝑎2; If the chosen number 𝑎 is greater than one, then the spell will turn it into 𝑎−1. Note that if the number is even and greater than one, then Petya can choose which spell to apply.ui
Petya now has only one number 𝑥. He wants to know if his favorite number 𝑦 can be obtained from 𝑥 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 𝑥 as it is.spa
Input
The first line contains single integer 𝑇 (1≤𝑇≤104) — the number of test cases. Each test case consists of two lines.rest
The first line of each test case contains two integers 𝑥 and 𝑦 (1≤𝑥,𝑦≤109) — the current number and the number that Petya wants to get.code
Output
For the 𝑖-th test case print the answer on it — YES if Petya can get the number 𝑦 from the number 𝑥 using known spells, and NO otherwise.ci
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).get
Example
input 7 2 3 1 1 3 6 6 8 1 2 4 1 31235 6578234 output YES YES NO YES NO YES YESinput
题意
如今给你一个数x。 若是这个数是偶数,你能够让这个数变成x/2*3。 你也能够让这个数变成x-1string
问你x通过若干次变换以后,可否变成y,能输出YES,不能输出NO
题解
其实,当x大于等于4的时候,这个x就能够变成无限大了,而后让x不断减1,就能够获得y了。 其余状况咱们暴力就能够。
代码
#include<bits/stdc++.h> using namespace std; void solve(){ long long x,y; map<long long,int>H; cin>>x>>y; while(H[x]==0){ if(x>=y){ cout<<"YES"<<endl; return; } H[x]=1; if(x%2==1)x--; x=x/2*3; } cout<<"NO"<<endl; } int main(){ int t; scanf("%d",&t); while(t--)solve(); }