数学题,看懂了就很好做。
下面给出证明:
首先,集合的异或操作是可以类比位运算的异或操作的。
对于一个集合
A
,可以给全集的每个元素赋一个01变量,表示是否在集合
这样 A xor B 其实就是两个二进制数异或了
然后这个东西是满足交换律和结合律的
然后:
(P xor A) xor (Q xor B)=A xor B(P xor Q) xor (A xor B)=A xor BP xor Q=∅P=Q
又因为 P⊂A,Q⊂B 所以P是 A∩B 的任意一个子集
所以答案就是 2|A∩B|
示例程序:
#include<cstdio>
typedef long long ll;
const int tt=1e9+7;
ll power(ll a,ll b){
ll w=a,res=1;
while (b){
if (b&1) res=res*w%tt;
w=w*w%tt;
b>>=1;
}
return res;
}
ll a,b,c;
int main(){
scanf("%lld%lld%lld",&a,&b,&c);
printf("%lld",power(2,c));
return 0;
}