今天在pythontip上遇到了一道有意思的题目:
给你一个正整数N(1 <= N <= 100000000000000000),求1^2^3^...^N的值。A^B表示A和B按位异或。 如N=3, 则输出0.
我的笨办法:
from math import * maxx=int(log(N,2))+1 ans=0 if N%4==1 or N%4==2: ans=1 zero=1 for i in range(1,maxx): t=(N-zero)%(2*(1<<i)) if t>=1 and t<(1<<i): if t%2==1: ans+=(1<<i) zero+=1<<i print ans
一行代码解法:
print([N, 1, N+1, 0][N%4])