229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
|
|
1 | |
Задачка на подумать11.01.2018, 21:24. Показов 1155. Ответов 16
Метки нет (Все метки)
Задачка для начинающих С-шников на подумать.
Дано: массив целочисленных неотрицательных значений размером, ну скажем, 1000000001 (один миллиард один) элемент, заполненный одним одним миллиардом парных (парное число встречается в массиве 2 раза) и одним непарным числом. Задача: найти это единственное непарное число.
0
|
11.01.2018, 21:24 | |
Ответы с готовыми решениями:
16
Двоичное. На подумать Винчестер любит подумать. Есть над чем подумать... Есть над чем подумать или как правильно организовать структуру БД |
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
11.01.2018, 21:39 | 2 |
spvert, а какие ограничения? 1.O(N), 2.O(NlnN), 3.O(N2)?
Случай 3 - тривиален. Случай 2 - я догадываюсь Случай 1 - Увы! Ничего путнего в голову пока не приходит. И можно ли использовать дополнительные массивы, хотя бы размером MAX_INT/8 ?
0
|
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
|
|
11.01.2018, 21:45 [ТС] | 3 |
Случай 3 тривиален, но размер имеет значение. 109 элементов. O(N2) дает 1018 операций. Если предположить, что 1 операция это 1 процессорный такт (что в общем, для данного случая, сильно некорректно, т.к. операции с памятью занимают больше 1 такта), то для 3 ГГц результат будет ожидаться... сколько поколений? -)
Случай 2 - предлагайте. Случай 1 - решение действительно есть. Дополнительные массивы создавайте на здоровье.
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
11.01.2018, 22:02 | 4 |
Согласен на все 100. Спросил для полноты
Помолчу пока. Не такой уж я начинающий Пусть ребята репу почешут. Если без дополнительных массивов, то очень интересно. А с дополнительными - 2 пальца. Заводим массив, используя его как битовую шкалу. Встретилось число - соответствующий бит +1 (mod 2). Останется единственный бит, равный единице.
0
|
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
|
|
11.01.2018, 22:22 [ТС] | 5 |
Ответ, предполагаю, опубликовать завтра. Часиков в 10 вечера по Москве. -)
Ну а конкретно Байт, могу кинуть в личку.
0
|
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
|
|
11.01.2018, 22:31 | 6 |
Так Байт уже написал полностью удовлетворительное решение O(N) уже 20 минут назад ... и без всякой лички.
0
|
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
|
|
11.01.2018, 22:33 [ТС] | 7 |
Есть решение без дополнительных массивов. -)
И в решении Байта есть один нюанс - дополнительный массив тоже надо чистить. И, кстати, битовая шкала это круто - т.е. массив заводится размером 232 / 8? В случае 64-х бит это будет смотреться фейерично -)
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
11.01.2018, 22:37 | 8 |
Не, я там массив здоровенный использую. Что мне разрешили, но в самом деле это не делает мне чести.
Не надо. Торопиться мне некуда. Даже наоборот, будет над чем подумать до 10-ти вечера.
Не по теме: А так-то... Всегда приятно пообщаться с хорошим человеком.:)
0
|
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
|
|
11.01.2018, 22:44 [ТС] | 9 |
Olej, представьте себе решение этой задачи если у вас 1 МБайт оперативной памяти.
Уж больно Никлаус Вирт любил такие задачи. Да и во времена не столь отдаленные массивы данных часто перевешивали 48 КБайт оперативки. И сейчас BigData создает объемы данных для переработки больше оперативки
0
|
Заблокирован
|
|
11.01.2018, 23:35 | 10 |
Сообщение было отмечено spvert как решение
Решение
2
|
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
|
|
11.01.2018, 23:44 [ТС] | 11 |
Тадааам!
И у нас есть победитель. Действительно, решение - XOR всех элементов массива. Результат - единственное непарное число. Честный O(N) без дополнительных массивов. P.S. Честно - сами додумались или подсказал кто?
0
|
|
12.01.2018, 00:00
#12
|
Не по теме: Вторая ссылка в гугле - найти уникальное число среди парных.
0
|
12.01.2018, 10:21 | 14 |
Побитовые операции: в массиве определить число, которое не имеет пары, с использованием xor
Добавлено через 50 секунд Под си допиливается на раз.
0
|
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
|
|
12.01.2018, 13:26 [ТС] | 15 |
HighPredator, данная тема не запрос на программу.
Это была попытка разнообразить поток однотипных непонимаек или нежелаек, чтобы многоуважаемые Доны могли развлечься. К сожалению, данная задачка уже успела засветиться в интернете, а потому ее считили. Придумаю другую. -)
1
|
HighPredator
|
12.01.2018, 13:39
#16
|
Не по теме: spvert, я к тому что она древняя как я не знаю что и тут была в т.ч.
0
|
Байт
|
12.01.2018, 14:49
Задачка на подумать
#17
|
Не по теме: HighPredator, Однако, трудно найти под этой луной что-то действительно новенькое. А лично для меня ново то, что я вижу в первый раз (или успел забыть). И усилия уважаемого spvert достойны всяческих похвал. :)
0
|
12.01.2018, 14:49 | |
Над чем еще надо подумать, чтобы довести базу до ума? Создать форму для заказа товаров. HTML докмент у меня есть, а вот с PHP нужно подумать Задачка с массивом и задачка с формулами Ньютона и Лагранжа Хочу создать свой сервер. Но прежде хочу подумать о его защите Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |