查找给定范围内所有数字的异或
您将获得较大的范围[a,b],其中“ a”和“ b”通常可以在1到4,000,000,000之间(含)。您必须找出给定范围内所有数字的XOR。 TopCoder SRM中使用了此问题。我看到了比赛中提交的一种解决方案,但无法弄清楚其工作原理。 有人可以帮助解释获奖的解决方案: long long f(long long a) { long long res[] = {a,1,a+1,0}; return res[a%4]; } long long getXor(long long a, long long b) { return f(b)^f(a-1); } 在这里,getXor()实际的函数是计算通过范围[a,b]中所有数字的异或,而“ f()”是一个辅助函数。