627 A codeforces
2016-03-02 20:24
148 查看
给出 a+b 的值 , a^b 的值
求 a b ,满足的条件有多少种
a+b = a^b +(a&b)*2
证明:
a : 1 0 0 1 1
b: 1 0 1 0
a+b: 1 1 1 0 1
a^b: 1 1 0 0 1
由于 a^b 会使 的其所在位变为0 ,所以减少了 1<<位数,即 (a&b *2
求 a b ,满足的条件有多少种
a+b = a^b +(a&b)*2
证明:
a : 1 0 0 1 1
b: 1 0 1 0
a+b: 1 1 1 0 1
a^b: 1 1 0 0 1
由于 a^b 会使 的其所在位变为0 ,所以减少了 1<<位数,即 (a&b *2
#include<bits/stdc++.h> using namespace std; int main() { __int64 a,b; scanf("%I64d%I64d",&a,&b); __int64 ans = 1; int gf = 0; if(a==b) gf = -2; if( a - b>=0&&(a-b)%2==0) { __int64 x= (a-b)/2; int cot = 0; int flag= 1; while(b) { if(b%2) { if(x%2) { flag = 0; } ans = ans*2; } if(!flag) break; x=x/2; b = b/2; } if(!flag) { cout<<"0"<<endl; return 0; } printf("%I64d\n",ans+gf); } else { printf("0\n"); } }
相关文章推荐
- 消费者监听JMS(二)
- jQuery--后台主机列表编辑
- 【LeetCode】289. Game of Life
- 快速排序
- getline()的使用详解
- eNSP_Client:virtualbox host-only网卡不存在或IP地址不正确
- 【bzoj1797】[Ahoi2009]Mincut 最小割 最小割的可行边与必须边
- 大神们的网站
- HtmlHelper扩展实例
- iOS开发中的多线程的GCD用法
- 打造万能的ListView GridView 适配器
- linux 中几个非常有用的指令(1)
- 多线程实现
- POJ--3723---Conscription---最大生成树
- 矩形覆盖
- Mapnik 教程
- 太空飞行计划问题 2011-12-29
- 飞行员配对方案问题 2011-12-29
- 图的存储与遍历
- hdu2899 Strange fuction(二分兼三分)