1. 程式人生 > >Codeforces627A【數學·有意思】

Codeforces627A【數學·有意思】

題意:
求有多少對( a , b ),a+b=s,a^b=x.(正整數)
思路:
a+b=a^b+a&b*2;

#include <iostream>
#include <cstdio>
#include<vector>
#include <cstring>
#include <algorithm>
using namespace std;
typedef __int64 LL;

int main()
{
    LL s,x;
    scanf("%I64d%I64d",&s,&x);
    LL t=(s-x)/2
; if(s<x||(s-x)%2||x&t) { puts("0"); return 0; } LL ans=0; int cnt=0; bool flag=true; if(s==x) ans-=2; while(x) { if(x&1) cnt++; x>>=1; } ans+=(1LL<<cnt); printf("%I64d\n",ans); return
0; }