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

Posted SSL_LKJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;


谢谢

以上是关于51nod.3047位移运算(位运算)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

Java位运算:位异或运算位与运算位或运算位取反运算左位移运算右位移运算无符号右移运算不用额外变量交换两个整数的值(使用位异或运算)

Java位运算:位异或运算位与运算位或运算位取反运算左位移运算右位移运算无符号右移运算不用额外变量交换两个整数的值(使用位异或运算)只出现一次的数字

Java位运算:位异或运算位与运算位或运算位取反运算左位移运算右位移运算无符号右移运算不用额外变量交换两个整数的值(使用位异或运算)只出现一次的数字