Отговори на тема  [ 23 мнения ]  Отиди на страница Предишна  1, 2
задачка ;) 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: задачка ;)
Интересното е с for();

_________________
Warriors of the Night, ASSEMBLER!!!


Чет Юни 21, 2012 7:38 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пон Апр 16, 2012 9:05 pm
Мнения: 182
Мнение Re: задачка ;)
Уфф , до 510 го докарвам :(
for (i=0; i<=255; i++) for(i=0; i < 255; i++);


Пет Юни 22, 2012 10:06 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: задачка ;)
anrieff написа:
Ако това е истинското решение на задачата с 511, както го е написал Пушека, да ме прощавате, ама задачата е мега некоректно зададена.

Искате ли една малко по-трудна?

Имате масив с цели числа (могат да са и големи, 32-битови примерно). В него масив, всички числа се срещат точно два пъти, с изключение на едно от тях, което го има само веднъж. Примерно { 3, 188, 55, 55, 3 }.
Търси се кое е самотното. Не се разрешава сортиране. O(N) сложност се гони.

Тази е елементарна - xor-ваш всички числа и си готов.
Edit: Сори, не съм видял че вече е решено ...

_________________
Мразя да мразя ...


Съб Юни 23, 2012 12:32 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Нед Ное 16, 2008 1:16 pm
Мнения: 179
Местоположение: София
Мнение Re: задачка ;)
Ето ви я и един ъпгрейд на моята задача.

Същото е условието, само че този път самотните числа са две (=> и масива е с четен брой елементи).

Примерно: { 11, 35, 11, 28, 6, 7, 6, 35 }
Търсените самотни числа са 7, 28 (може и в обратен ред)

_________________
2 + 2 = 5, при много големи стойности на 2.


Нед Юни 24, 2012 10:07 pm
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пон Апр 16, 2012 9:05 pm
Мнения: 182
Мнение Re: задачка ;)
XOR на първата половина от масива.
Ако резулатът е 0 => и двете самотни числа са във втората половина. Нова итерация с половината от втората половина.
Ако резултатът не е 0, XOR на другата половина, ако и там резултатът не е 0 => 2та резултата са търсените числа.
Ако е = 0 => двете числа са в първата половина.
Правим нова итерация с първата половина. И така до пълна победа :)


Пон Юни 25, 2012 8:15 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение Re: задачка ;)
Пушека написа:
XOR на ...


Тц. Удар в празно пространство. :D


Пон Юни 25, 2012 11:05 am
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Нед Ное 16, 2008 1:16 pm
Мнения: 179
Местоположение: София
Мнение Re: задачка ;)
То дори на дадения пример не работи това решение :)

_________________
2 + 2 = 5, при много големи стойности на 2.


Пон Юни 25, 2012 8:06 pm
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пон Апр 16, 2012 9:05 pm
Мнения: 182
Мнение Re: задачка ;)
Само проверявам дали вие ме проверявате. :D
Че и в предния ми пост с for(... пак има недомислица, но май никой не забеляза.


Пон Юни 25, 2012 8:56 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 23 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни