十分显然地:
1.除了y=1的情况以外,凡是x=1的,都是无解的
2.经过操作之后变回了原来的数,也是无解的
3.x>y时一定有解(一直减就完事了)
4.x<y时,只要是偶数就必选第一种操作(使x增大),只要x增大到比y大就一定有解了
当我看到“若x>=1且x为偶数时,两种操作可以任意选择”的时候我就傻了……然后误以为是那种“选与不选”的问题,尝试递归来着……
然后给阿萧看了一眼,被告知直接循环搞定就好。
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--){
int x,y;
scanf("%d%d",&x,&y);
if(x==1&&y!=1) {
printf("NO\n");
continue;
}
if(x>y){
printf("YES\n");
continue;
}
int a=x;
int ok=1;
while(x<y){
if(x%2==0) x=x/2*3;
else x--;
if(x==a){
printf("NO\n");
ok=0;
break;
}
}
if(ok) printf("YES\n");
}
return 0;
}