"小蛤啊,对了以后我就叫你小蛤了,你给的题完全没有难度啊"
"哼,你别得意,让你碰巧做出来了而已,接下来这题你绝对不可能做出来的,你要是做出来了balabalabala...."
"行了行了,快说题目吧,我时间宝贵啊!" 小A心急如焚,想尽快知道小C的消息
"请听题:
给n个正整数a1,a2,a3,……,an,求所有子区间异或和的异或和。比如{2,4,6}的子区间有{{2},{4},{6},{2,4},{4,6},{2,4,6}}
其中异或是按位异或,即C/C++中的"^"运算符"
"这么简单,看我三下五除二解决了这题,三分钟后你就叫小蛤没得商量了!你答应给我,告诉我小C的消息可不许反悔!"
"哼,爷蛤蟆大仙是那种会反悔的人吗,而且你不可能会做这题的,看你一会怎么给自己找台阶下!"
注意异或有两个常用的性质(下面的"^"代表异或运算)
a^a=0
a^0=a
单组数据
开头是一个整数n代表n个数字,n<=5*105
接下来有n个数a1,a2,a3,……an ,(0<=ai<230)
输出所有子区间异或和的异或和
4 3 3 6 7
0hint: 所有子区间与对应的异或和如下: {3} 3 {3,3} 0 {3,3,6} 6 {3,3,6,7} 1 {3} 3 {3,6} 5 {3,6,7} 2 {6} 6 {6,7} 1 {7} 7 所以答案=3^0^6^1^3^5^2^6^1^7=0