Posts pythonTip 85 异或求和
Post
Cancel

pythonTip 85 异或求和

题目描述: 给你一个正整数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)
This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

pythonTip 84 Py的函数II

pythonTip 86 修剪数列

Trending Tags