题目描述: 给你一个正整数N(1 <= N <= 100000000000000000),求1^2^3^…^N的值。A^B表示A和B按位异或。 如N=3, 则输出0.
示例: 输入: N = 3 输出: 0
分析:
给一组数据,懂的都懂。
1
2
3
4
5
6
7
8
9
0 => 0
1 => 1
2 = > 3
3 = > 0
4 => 4
5 => 1
6 => 7
7 => 0
每4位就变为0。 所以懂了吧,小伙伴们。
只需要从大到小开始异或,最后判断 i-1 是不是4的倍数,如果是,则终止循环。
代码:
1
2
3
4
5
6
ans = 1
for i in range(N, 0, -1):
if (i-1)%4 == 0:
break
ans ^= i
print(ans)