Не могу понять простейший алгоритм

228
25 мая 2022, 05:40

Нужно посчитать XOR-ы всех чисел на заданном отрезке. Операция xor мне знакома, но я не знаю как посчитать xor-ы всех чисел. Пытался XOR-ить сначало первое число с всеми остальными и эти XOR-ы XOR-ил между собой, так же до последнего числа и потом ещё эти резульаты XOR-ил, но это неправильно.

Answer 1

По понятным причинам, xor между четным числом и следующим за ним нечетным равно 1. Поэтому, а также потому, что xor - ассоциативна.

0 ^ 1 ^ 2 ^ 3 ^ ... ^ 2n-2 ^ 2n-1 =
(0 ^ 1) ^ (2 ^ 3) ^ ... ^ (2n-2 ^ 2n-1) =
1 ^ 1 ^ ... ^ 1 ^ 1 (n раз)

Т.е. если последовательность начинается с четного числа и заканчивается нечетным, то результат для нее будет равен 1 если общее количество членов не делится на 4, и 0 если делится.

Т.е, например

40 ^ 41 ^ ... ^ 99999998 ^ 99999999 = 0

т.к 40 - четное, 99999999 - нечетное и 99999999 - 40 + 1 делится на 4

Если же последовательность начинается с нечетного и/или заканчивается на четное, эти числа можно "доксорить" к результату, потому, xor еще и коммутативна.

39 ^ 40 ^ 41 ^ ... ^ 99999998 ^ 99999999 ^ 100000000 = 
(40 ^ 41 ^ ... ^ 99999998 ^ 99999999) ^ 39 ^ 100000000 =
0 ^ 39 ^ 100000000

Ну и возможно поможет тот факт, что операция xor обращает саму себя

a ^ b ^ a = b

Поэтому

(0 ^ 1 ^ ... ^ n) ^ (0 ^ 1 ^ ... ^ m) = n+1 ^ n+2 ^ ... ^ m 

где n ≤ m, но это уже на ваше усмотрение

Answer 2

Что-то типа

unsigned int res = 0;
for(unsigned int i = left; i <= right; ++i)
    res ^= i;
READ ALSO
Перегрузка операции

Перегрузка операции

Началась новая тема и я никак не могу понять, что требуется и как это реализовать на практикеЕсли кто-нибудь сможет разъяснить, показать пример(с...

181
Создание прозрачного окна с поддержкой непрозрачных / полупрозрачных объектов

Создание прозрачного окна с поддержкой непрозрачных / полупрозрачных объектов

Необходимо сделать так, чтобы на прозрачном окне можно было создавать объекты любой прозрачности и чтобы эта прозрачность не зависела от окна

255
нету метода Label в qt

нету метода Label в qt

привет у меня проблема когда я хочу спользовать метод label в классе то его нету но в файлеui я его добавлял я пытался очищать проект и пересобирать...

288