Прямая формула для суммирования XOR - PullRequest
33 голосов
/ 14 октября 2010

Я должен XOR числа от 1 до N, существует ли прямая формула для этого?

Например, если N = 6, то 1^2^3^4^5^6 = 7 Я хочу сделать это без использования цикла, поэтому мне нужна формула O (1) (если есть)

Ответы [ 12 ]

0 голосов
/ 27 января 2017

Если все еще кому-то это нужно, простое решение на 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
0 голосов
/ 01 февраля 2016

Взгляните на это.Это решит вашу проблему.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...