【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;
}

谢谢

上一篇:课程设计--从零开始写一个springboot+MyBatis+jsp管理系统(四)


下一篇:MySQL主从双向同步复制