atcoder位运算&结论+公式推导

这篇博客深入解析了位运算符AND(&)在表达式中的应用,并通过公式推导和C++代码示例展示了如何得出结论x+y=2(x&y)+(x~y)+~-~-x~y+x^y~y。文章还探讨了相关变量之间的关系和约束条件,提供了一个判断特定条件的程序实例。
摘要由CSDN通过智能技术生成

D-位运算&结论+公式推导

链接

结论:

  1. x + y = 2 (   x   x+y=2(~x~ x+y=2( x &   y   ) +   (   x   ~y~)+~(~x~  y )+ ( x ^   y   )   ~y~)~  y ) 
  2. (   x   (~x~ ( x &   y   )   ~y~)~  y ) &   (   x   ~(~x~  ( x ^   y   ) = 0 ~y~)=0  y )=0

本题定义的 A N D AND AND即 &

x + y = s ,   x   x+y=s,~x~ x+y=s, x &   y = a ~y=a  y=a

  s = 2 a + ~s=2a+  s=2a+ (   x (~x ( x^   y   ) ( 1 ) ~y~)(1)  y )1
a   a~ a &   (   x   ~(~x~  ( x ^   y   ) = 0 ( 2 ) ~y~)=0 (2)  y )=02

由(1)(2)得到: s ≥ 2 a ,   a   s≥2a,~a~ s2a, a & ( s − 2 a ) = 0 (s-2a)=0 (s2a)=0

#include<iostream>
using namespace std;
long long a,s,t;
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>a>>s;
		if((s>=2*a)&&(((s-2*a)&a)==0))
			cout<<"Yes"<<endl;
		else		
			cout<<"No"<<endl;	
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值