其他分享
首页 > 其他分享> > 【51nod.3047】位移运算(位运算)

【51nod.3047】位移运算(位运算)

作者:互联网

位移运算

题目传送门
在这里插入图片描述

输入样例

4
4 2
2 4
3 4
1 3

输出样例

Yes
Yes
Yes
No

解题思路

判断一直右移是否有包含子串

AC代码

#include<cstdio>
using namespace std;
int T;
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		int x,y,ok=0;
		scanf("%d%d",&x,&y);
		if(y==0)//特判
		{
			printf("Yes\n");
			continue;
		}
		while(!(y&1))y>>=1;
		while(x>=y)
		{
			int z=x^y;
			if((x&y)&&(!z||(z&-z)>=y))
			{
				ok=1;
				break;
			}
			x>>=1;
		}
		if(ok)printf("Yes\n");
		else printf("No\n");
	} 
	return 0;
}

谢谢

标签:ok,运算,int,while,printf,51nod.3047,Yes,位移
来源: https://blog.csdn.net/weixin_45524309/article/details/123144947