【数论】[11.15]

CF1257B Magic Stick

十分显然地:
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;
}
发布了28 篇原创文章 · 获赞 0 · 访问量 675

猜你喜欢

转载自blog.csdn.net/weixin_45561591/article/details/103092943