| Автор |
Съобщение |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 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 |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 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 |
|
 |
|
anrieff
Ранг: Новодошъл
Регистриран на: Нед Ное 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 |
|
 |
|
Пушека
Ранг: Новодошъл
Регистриран на: Пон Апр 16, 2012 9:05 pm Мнения: 182
|
 Re: задачка ;)
XOR на първата половина от масива. Ако резулатът е 0 => и двете самотни числа са във втората половина. Нова итерация с половината от втората половина. Ако резултатът не е 0, XOR на другата половина, ако и там резултатът не е 0 => 2та резултата са търсените числа. Ако е = 0 => двете числа са в първата половина. Правим нова итерация с първата половина. И така до пълна победа 
|
| Пон Юни 25, 2012 8:15 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
 Re: задачка ;)
Тц. Удар в празно пространство. 
|
| Пон Юни 25, 2012 11:05 am |
|
 |
|
anrieff
Ранг: Новодошъл
Регистриран на: Нед Ное 16, 2008 1:16 pm Мнения: 179 Местоположение: София
|
 Re: задачка ;)
То дори на дадения пример не работи това решение 
_________________ 2 + 2 = 5, при много големи стойности на 2.
|
| Пон Юни 25, 2012 8:06 pm |
|
 |
|
Пушека
Ранг: Новодошъл
Регистриран на: Пон Апр 16, 2012 9:05 pm Мнения: 182
|
 Re: задачка ;)
Само проверявам дали вие ме проверявате. Че и в предния ми пост с for(... пак има недомислица, но май никой не забеляза.
|
| Пон Юни 25, 2012 8:56 pm |
|
|