题目链接:https://www.51nod.com/contest/problem.html#!problemId=1622
题解:
设M = P xor A,则 M∈A,M是P的补集,M与P一一对应。
设N = Q xor B,则 N∈B,N是B的补集,N与B一一对应。
所以(P xor A)xor(Q xor B) = M xor N = A xor B
即求有多少对(M,N),M∈A,N∈B,满足上式。
因为属于A而不属于B的元素一定在M中,属于B而不属于A的元素一定在N中,A∩B的元素,要么同时属于M和N,要么都不属于,所以答案就是A∩B的子集个数2^c
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int mod = 1e9+;
typedef long long ll;
ll pow(ll a, ll n){
ll r = ;
ll t = a % mod;
while(n){
if(n & )
r = (r * t) % mod;
t = t * t % mod;
n >>= ;
}
return r;
}
int main(){
ll a, b, c;
scanf("%lld%lld%lld", &a, &b,&c);
printf("%lld\n", pow(,c));
return ;
}