题意:给定N,K,P,表示现在有一个集合{0, 1, ..., 2n - 1},问有多少个非空子集的异或和为K: 答案%P.(1 ≤ n ≤ 1018, 0 ≤ k ≤ min(2n - 1, 1018), 2 ≤ p ≤ 109, p is prime.) 思路:先抽离出一个线性基出来,然后非基部分乱选,然后基来调整. 而这里显然可以把二进制表示法下只有一个1的那些数抽离出来当基. 所以答案=2^(2^N-N)%P; 要注意的是: 1,K=0的时候有空集,所以减去. 2,欧拉降幂的时候2和P…