ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 102946
Условие
Дана последовательность целых чисел. Известно, что все числа в ней
встречаются ровно два раза, кроме одного, которое встречается только один раз.
Напишите программу, определяющую это число.
РешениеРассмотрим xor-сумму всех чисел, т.е. выражение a1 xor a2 xor ... xor an , где a1, a2, ..., an –числа, записанные во входном файле. Полученный результат будет равен искомому числу. Действительно, a xor a = 0 и 0 xor a = a. В силу коммутативности и ассоциативности операции xor (проверьте эти свойства!) можно считать, что мы сначала выполнили xor тех чисел, которые встречаются дважды. В результате указанное выражение примет вид (b1 xor b1) xor (b2 xor b2) xor ... xor (bn div 2 xor bn div 2) xor с = с, где bi – числа, которые встречаются в файле два раза, а c – один раз. Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
![]() |
Проект осуществляется при поддержке