-
F - [功不唐捐-2013]_强哥的无敌异或
- 对于“每个区间中出现奇数次数字的异或和”,因为每个区间中出现偶数次数字的异或和恒为0,因此可 以将题意变为“每个区间出现偶数次数字异或和”异或“每个区间出现奇数次数字异或和”,即“每个区间所 有数字的异或和”。 将数组进行前缀和处理,前缀和数组中的S[i]表示区间[1,i]的异或和,所以区间[l,r]的异或和可以用[1,l-1] 的异或和异或[1,r]的异或和得出
- 思维xor 偶数次就是0然后,任何数与0的xor都为其本身。
#include <stdio.h> int main() { int t; int n,q,l,r; int a[110000]; int s[110000]; s[0]=0; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); s[i]=a[i]^s[i-1]; } scanf("%d",&q); while(q--) { scanf("%d%d",&l,&r); printf("%d\n",s[r]^s[l-1]); } } return 0; }