Нужно посчитать XOR-ы всех чисел на заданном отрезке. Операция xor мне знакома, но я не знаю как посчитать xor-ы всех чисел. Пытался XOR-ить сначало первое число с всеми остальными и эти XOR-ы XOR-ил между собой, так же до последнего числа и потом ещё эти резульаты XOR-ил, но это неправильно.
По понятным причинам, 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, но это уже на ваше усмотрение
Что-то типа
unsigned int res = 0;
for(unsigned int i = left; i <= right; ++i)
res ^= i;
Началась новая тема и я никак не могу понять, что требуется и как это реализовать на практикеЕсли кто-нибудь сможет разъяснить, показать пример(с...
Необходимо сделать так, чтобы на прозрачном окне можно было создавать объекты любой прозрачности и чтобы эта прозрачность не зависела от окна
привет у меня проблема когда я хочу спользовать метод label в классе то его нету но в файлеui я его добавлял я пытался очищать проект и пересобирать...