Я должен XOR числа от 1 до N, существует ли прямая формула для этого?
Например, если N = 6, то 1^2^3^4^5^6 = 7 Я хочу сделать это без использования цикла, поэтому мне нужна формула O (1) (если есть)
N = 6
1^2^3^4^5^6 = 7
Если все еще кому-то это нужно, простое решение на Python:
def XorSum(L): res = 0 if (L-1)%4 == 0: res = L-1 elif (L-1)%4 == 1: res = 1 elif (L-1)%4 == 2: res = (L-1)^1 else: #3 res= 0 return res
Взгляните на это.Это решит вашу проблему.
https://stackoverflow.com/a/10670524/4973570
Для вычисления суммы XOR от 1 до N:
int ans,mod=N%4; if(mod==0) ans=N; else if(mod==1) ans=1; else if(mod==2) ans=N+1; else if(mod==3) ans=0;