Найти удаленное число
-
- Новичок
- Posts: 88
- Joined: 05 Sep 1999 09:01
- Location: CA, USA
Найти удаленное число
Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?
[ 27-12-2001: Message edited by: wanderer ]</p>
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?
[ 27-12-2001: Message edited by: wanderer ]</p>
-
- Уже с Приветом
- Posts: 577
- Joined: 19 Oct 2000 09:01
- Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">:</font><hr>Originally posted by wanderer:
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
методом деления пополам? [img:bd4ba1b278]images/smiles/icon_confused.gif[/img:bd4ba1b278]
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
методом деления пополам? [img:bd4ba1b278]images/smiles/icon_confused.gif[/img:bd4ba1b278]
-
- Уже с Приветом
- Posts: 577
- Joined: 19 Oct 2000 09:01
- Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
Найти удаленное число
а если массив Y после удаления элемента еще и перемешали, то получается линейная сложность, если допустить, что мы можем использовать кусок памяти размером MAX(X) [img:3d70f54aed]images/smiles/icon_wink.gif[/img:3d70f54aed]
-
- Уже с Приветом
- Posts: 1615
- Joined: 12 Jul 2001 09:01
- Location: Raleigh, NC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong><blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">:</font><hr>Originally posted by wanderer:
[qb]Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
методом деления пополам? [img:fbe19d8891]images/smiles/icon_confused.gif[/img:fbe19d8891] [/QB]<hr></blockquote>
Если в массиве одно и то же число может появляться несколько раз, то не очень понятно, как реализовывать метод деления пополам.
<strong><blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">:</font><hr>Originally posted by wanderer:
[qb]Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
методом деления пополам? [img:fbe19d8891]images/smiles/icon_confused.gif[/img:fbe19d8891] [/QB]<hr></blockquote>
Если в массиве одно и то же число может появляться несколько раз, то не очень понятно, как реализовывать метод деления пополам.
-
- Уже с Приветом
- Posts: 577
- Joined: 19 Oct 2000 09:01
- Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Kisena:
<strong>
Если в массиве одно и то же число может появляться несколько раз, то не очень понятно, как реализовывать метод деления пополам.</strong><hr></blockquote>
точно так же как и в случае с уникальными числами... делим отрезок пополам, пока не наткнемся на
[b:8930d7f0db]n : X[n]!=Y[n]&& X[n-1]==Y[n-1][/b:8930d7f0db]
[ 27-12-2001: Message edited by: Andy77 ]</p>
<strong>
Если в массиве одно и то же число может появляться несколько раз, то не очень понятно, как реализовывать метод деления пополам.</strong><hr></blockquote>
точно так же как и в случае с уникальными числами... делим отрезок пополам, пока не наткнемся на
[b:8930d7f0db]n : X[n]!=Y[n]&& X[n-1]==Y[n-1][/b:8930d7f0db]
[ 27-12-2001: Message edited by: Andy77 ]</p>
-
- Уже с Приветом
- Posts: 242
- Joined: 03 Jan 2000 10:01
- Location: TX > MA/NH > NJ/NYC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong>а если массив Y после удаления элемента еще и перемешали, то получается линейная сложность, если допустить, что мы можем использовать кусок памяти размером MAX(X) [img:2f0bbdded9]images/smiles/icon_wink.gif[/img:2f0bbdded9] </strong><hr></blockquote>
наверное, это и имелось в виду. в остальных случаях проще найти число _вместе_ с его индексом.
wanderer?
<strong>а если массив Y после удаления элемента еще и перемешали, то получается линейная сложность, если допустить, что мы можем использовать кусок памяти размером MAX(X) [img:2f0bbdded9]images/smiles/icon_wink.gif[/img:2f0bbdded9] </strong><hr></blockquote>
наверное, это и имелось в виду. в остальных случаях проще найти число _вместе_ с его индексом.
wanderer?
-
- Новичок
- Posts: 88
- Joined: 05 Sep 1999 09:01
- Location: CA, USA
Найти удаленное число
Поскольку не сказано что числа все разные, то ... хмм ... они могут быть одинаковы. Поэтому, вопрос о положении удаленного элемента в общем случае неразрешим. Ну разве что попросить положение КАКОГО НИБУДЬ элемента с тем же значением. Но и этого не спрашивается. Все что спрашивается, это какое ЧИСЛО было удалено, где бы оно не находилось.
Также, элементы второго массива не обязанны быть расположенными в том же порядке. Извиняюсь если из условия это было не очень ясно.
[ 27-12-2001: Message edited by: wanderer ]</p>
Также, элементы второго массива не обязанны быть расположенными в том же порядке. Извиняюсь если из условия это было не очень ясно.
[ 27-12-2001: Message edited by: wanderer ]</p>
-
- Уже с Приветом
- Posts: 577
- Joined: 19 Oct 2000 09:01
- Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Поскольку не сказано что числа все разные, то ... хмм ... они могут быть одинаковы. Поэтому, вопрос о положении удаленного элемента в общем случае неразрешим. Ну разве что попросить положение КАКОГО НИБУДЬ элемента с тем же значением. Но и этого не спрашивается. Все что спрашивается, это какое ЧИСЛО было удалено, где бы оно не находилось.
Также, элементы второго массива не обязанны быть расположенными в том же порядке. Извиняюсь если из условия это было не очень ясно.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
Тогда считаем суммы первого и второго массива - сойдёт?
<strong>Поскольку не сказано что числа все разные, то ... хмм ... они могут быть одинаковы. Поэтому, вопрос о положении удаленного элемента в общем случае неразрешим. Ну разве что попросить положение КАКОГО НИБУДЬ элемента с тем же значением. Но и этого не спрашивается. Все что спрашивается, это какое ЧИСЛО было удалено, где бы оно не находилось.
Также, элементы второго массива не обязанны быть расположенными в том же порядке. Извиняюсь если из условия это было не очень ясно.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
Тогда считаем суммы первого и второго массива - сойдёт?
-
- Новичок
- Posts: 96
- Joined: 19 Jun 2001 09:01
- Location: Canada
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?</strong><hr></blockquote>
Я бы отсортировал оба массива X и Y функцией qsort. А затем
for(int i=0; i<N-1; i++)
if(X[i] != Y[i])
return X[i];
return X[N-1];
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?</strong><hr></blockquote>
Я бы отсортировал оба массива X и Y функцией qsort. А затем
for(int i=0; i<N-1; i++)
if(X[i] != Y[i])
return X[i];
return X[N-1];
-
- Новичок
- Posts: 96
- Joined: 19 Jun 2001 09:01
- Location: Canada
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong>
Тогда считаем суммы первого и второго массива - сойдёт?</strong><hr></blockquote>
Просто и красиво!
<strong>
Тогда считаем суммы первого и второго массива - сойдёт?</strong><hr></blockquote>
Просто и красиво!
-
- Уже с Приветом
- Posts: 242
- Joined: 03 Jan 2000 10:01
- Location: TX > MA/NH > NJ/NYC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Chapaev:
<strong>
Я бы отсортировал оба массива X и Y функцией qsort. А затем...</strong><hr></blockquote>
сложность у quicksort'а (что нас в этой задаче и заботит) N * log(N) - больше чем линейная.
<strong>
Я бы отсортировал оба массива X и Y функцией qsort. А затем...</strong><hr></blockquote>
сложность у quicksort'а (что нас в этой задаче и заботит) N * log(N) - больше чем линейная.
-
- Новичок
- Posts: 88
- Joined: 05 Sep 1999 09:01
- Location: CA, USA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong>
Тогда считаем суммы первого и второго массива - сойдёт?</strong><hr></blockquote>
Для математика сойдет вполне [img:430f246ab8]images/smiles/icon_smile.gif[/img:430f246ab8] И действительно, просто и красиво.
Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:430f246ab8]images/smiles/icon_sad.gif[/img:430f246ab8]
Тогда как ?
<strong>
Тогда считаем суммы первого и второго массива - сойдёт?</strong><hr></blockquote>
Для математика сойдет вполне [img:430f246ab8]images/smiles/icon_smile.gif[/img:430f246ab8] И действительно, просто и красиво.
Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:430f246ab8]images/smiles/icon_sad.gif[/img:430f246ab8]
Тогда как ?
-
- Уже с Приветом
- Posts: 1615
- Joined: 12 Jul 2001 09:01
- Location: Raleigh, NC
Найти удаленное число
А сравнивать можно? Насколько мы помним, сравнение двух чисел производится путем сравнения их разницы с нулем. Или теперь так не делают? Или никогда так не делали?
-
- Уже с Приветом
- Posts: 242
- Joined: 03 Jan 2000 10:01
- Location: TX > MA/NH > NJ/NYC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:45b8d2a598]images/smiles/icon_sad.gif[/img:45b8d2a598]
Тогда как ?</strong><hr></blockquote>
недобрый Вы, Wanderer [img:45b8d2a598]images/smiles/icon_sad.gif[/img:45b8d2a598] [img:45b8d2a598]images/smiles/icon_mad.gif[/img:45b8d2a598] [img:45b8d2a598]images/smiles/icon_wink.gif[/img:45b8d2a598]
XOR!
[ 27-12-2001: Message edited by: Drom ]</p>
<strong>Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:45b8d2a598]images/smiles/icon_sad.gif[/img:45b8d2a598]
Тогда как ?</strong><hr></blockquote>
недобрый Вы, Wanderer [img:45b8d2a598]images/smiles/icon_sad.gif[/img:45b8d2a598] [img:45b8d2a598]images/smiles/icon_mad.gif[/img:45b8d2a598] [img:45b8d2a598]images/smiles/icon_wink.gif[/img:45b8d2a598]
XOR!
[ 27-12-2001: Message edited by: Drom ]</p>
-
- Уже с Приветом
- Posts: 753
- Joined: 18 Sep 2000 09:01
- Location: Fremont, CA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Для математика сойдет вполне [img:06aa4e0c2d]images/smiles/icon_smile.gif[/img:06aa4e0c2d] И действительно, просто и красиво.
Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:06aa4e0c2d]images/smiles/icon_sad.gif[/img:06aa4e0c2d]
Тогда как ?</strong><hr></blockquote>
сложение в поле ? то что по программистки называется wrap around ?
теперь давайте усложним задачу. скажем что во втором массиве меньше не на одно а на два числа. как найти эти два числа?
PS. Между прочим мне эту задачу задавали на интервью [img:06aa4e0c2d]images/smiles/icon_smile.gif[/img:06aa4e0c2d]
<strong>Для математика сойдет вполне [img:06aa4e0c2d]images/smiles/icon_smile.gif[/img:06aa4e0c2d] И действительно, просто и красиво.
Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:06aa4e0c2d]images/smiles/icon_sad.gif[/img:06aa4e0c2d]
Тогда как ?</strong><hr></blockquote>
сложение в поле ? то что по программистки называется wrap around ?
теперь давайте усложним задачу. скажем что во втором массиве меньше не на одно а на два числа. как найти эти два числа?
PS. Между прочим мне эту задачу задавали на интервью [img:06aa4e0c2d]images/smiles/icon_smile.gif[/img:06aa4e0c2d]
-
- Уже с Приветом
- Posts: 242
- Joined: 03 Jan 2000 10:01
- Location: TX > MA/NH > NJ/NYC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by sttranik:
<strong>
сложение в поле ? то что по программистки называется wrap around ?</strong><hr></blockquote>
а по-математитски wrap around это сложение по модулю? то есть просто отбрасывание старших знаков? для одного числа работает.
для 2х нет (как и XOR).
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr><strong>теперь давайте усложним задачу. скажем что во втором массиве меньше не на одно а на два числа. как найти эти два числа?
PS. Между прочим мне эту задачу задавали на интервью [img:71e9c27f93]images/smiles/icon_smile.gif[/img:71e9c27f93] </strong><hr></blockquote>
на интервю - если времени на подумать не очень много - я бы пошел по пути Чапаева - записать массив в hashtable (quicksort's complexity) со значениями чисел в качестве ключей, и количеством чисел в value - от первого массива с плюсом (+1), от второго с минусом (-1), при value=0 удалять совсем. оставшиеся после операции 1-2 ключа в таблице - искомые числа.
а вот если есть время подумать... тогда... [img:71e9c27f93]images/smiles/icon_sad.gif[/img:71e9c27f93]
[b:71e9c27f93]added:[/b:71e9c27f93]
все, sorry, крыша едет. уже перестал понимать, что такое сложение в поле. /напевая/ раскинулось поле по модулю пять, вокруг интегралы стояли...
[ 27-12-2001: Message edited by: Drom ]</p>
<strong>
сложение в поле ? то что по программистки называется wrap around ?</strong><hr></blockquote>
а по-математитски wrap around это сложение по модулю? то есть просто отбрасывание старших знаков? для одного числа работает.
для 2х нет (как и XOR).
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr><strong>теперь давайте усложним задачу. скажем что во втором массиве меньше не на одно а на два числа. как найти эти два числа?
PS. Между прочим мне эту задачу задавали на интервью [img:71e9c27f93]images/smiles/icon_smile.gif[/img:71e9c27f93] </strong><hr></blockquote>
на интервю - если времени на подумать не очень много - я бы пошел по пути Чапаева - записать массив в hashtable (quicksort's complexity) со значениями чисел в качестве ключей, и количеством чисел в value - от первого массива с плюсом (+1), от второго с минусом (-1), при value=0 удалять совсем. оставшиеся после операции 1-2 ключа в таблице - искомые числа.
а вот если есть время подумать... тогда... [img:71e9c27f93]images/smiles/icon_sad.gif[/img:71e9c27f93]
[b:71e9c27f93]added:[/b:71e9c27f93]
все, sorry, крыша едет. уже перестал понимать, что такое сложение в поле. /напевая/ раскинулось поле по модулю пять, вокруг интегралы стояли...
[ 27-12-2001: Message edited by: Drom ]</p>
-
- Новичок
- Posts: 88
- Joined: 05 Sep 1999 09:01
- Location: CA, USA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Kisena:
<strong>А сравнивать можно? Насколько мы помним, сравнение двух чисел производится путем сравнения их разницы с нулем. Или теперь так не делают? Или никогда так не делали?</strong><hr></blockquote>
Не-ааа .... не делали [img:29cbd278ca]images/smiles/icon_sad.gif[/img:29cbd278ca]
Sttranik, может как то можно найти и два числа. Но в моей задачи простое решение возможно лишь потому что число одно.
[ 27-12-2001: Message edited by: wanderer ]</p>
<strong>А сравнивать можно? Насколько мы помним, сравнение двух чисел производится путем сравнения их разницы с нулем. Или теперь так не делают? Или никогда так не делали?</strong><hr></blockquote>
Не-ааа .... не делали [img:29cbd278ca]images/smiles/icon_sad.gif[/img:29cbd278ca]
Sttranik, может как то можно найти и два числа. Но в моей задачи простое решение возможно лишь потому что число одно.
[ 27-12-2001: Message edited by: wanderer ]</p>
-
- Уже с Приветом
- Posts: 242
- Joined: 03 Jan 2000 10:01
- Location: TX > MA/NH > NJ/NYC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Не-ааа .... не делали [img:f7d6e34eee]images/smiles/icon_sad.gif[/img:f7d6e34eee]
Sttranik, может как то можно найти и два числа. Но в моей задачи простое решение возможно лишь потому что число одно.</strong><hr></blockquote>
может и делали - вроде бы SUB оставлял те же флаги, что и CMP - но это как-то не очень существенно.
простое (в смысле линейной сложности) решение должно быть! я в это верю, но уже засыпаю.
сумма чисел и сумма их квадратов должны содержать всю необходимую информацию для восстановления выброшенных (даже по модулю имени wrap around'а).
если проснусь - попробую дорешить.
D.
<strong>Не-ааа .... не делали [img:f7d6e34eee]images/smiles/icon_sad.gif[/img:f7d6e34eee]
Sttranik, может как то можно найти и два числа. Но в моей задачи простое решение возможно лишь потому что число одно.</strong><hr></blockquote>
может и делали - вроде бы SUB оставлял те же флаги, что и CMP - но это как-то не очень существенно.
простое (в смысле линейной сложности) решение должно быть! я в это верю, но уже засыпаю.
сумма чисел и сумма их квадратов должны содержать всю необходимую информацию для восстановления выброшенных (даже по модулю имени wrap around'а).
если проснусь - попробую дорешить.
D.
-
- Уже с Приветом
- Posts: 577
- Joined: 19 Oct 2000 09:01
- Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Drom:
<strong>сумма чисел и сумма их квадратов должны содержать всю необходимую информацию для восстановления выброшенных (даже по модулю имени wrap around'а).
если проснусь - попробую дорешить.
D.</strong><hr></blockquote>
странно, что Вы сразу не написали ответ [img:38049b6c2c]images/smiles/icon_smile.gif[/img:38049b6c2c]
пусть
s1 = sum(X) - sum(Y) == s1
s2 = sum(X*X) - sum(Y*Y) == s2 // разница сумм квадратов
тогда
a + b == s1
a^2 + b^2 == s2
квадратное уравнение...
<strong>сумма чисел и сумма их квадратов должны содержать всю необходимую информацию для восстановления выброшенных (даже по модулю имени wrap around'а).
если проснусь - попробую дорешить.
D.</strong><hr></blockquote>
странно, что Вы сразу не написали ответ [img:38049b6c2c]images/smiles/icon_smile.gif[/img:38049b6c2c]
пусть
s1 = sum(X) - sum(Y) == s1
s2 = sum(X*X) - sum(Y*Y) == s2 // разница сумм квадратов
тогда
a + b == s1
a^2 + b^2 == s2
квадратное уравнение...
-
- Новичок
- Posts: 88
- Joined: 05 Sep 1999 09:01
- Location: CA, USA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Drom:
<strong>
недобрый Вы, Wanderer [img:19fbf04f84]images/smiles/icon_sad.gif[/img:19fbf04f84] [img:19fbf04f84]images/smiles/icon_mad.gif[/img:19fbf04f84] [img:19fbf04f84]images/smiles/icon_wink.gif[/img:19fbf04f84]
XOR!
[ 27-12-2001: Message edited by: Drom ]</strong><hr></blockquote>
Drom, так как же насчет XOR ? Жалко, такая идея ... и заброшена ...
<strong>
недобрый Вы, Wanderer [img:19fbf04f84]images/smiles/icon_sad.gif[/img:19fbf04f84] [img:19fbf04f84]images/smiles/icon_mad.gif[/img:19fbf04f84] [img:19fbf04f84]images/smiles/icon_wink.gif[/img:19fbf04f84]
XOR!
[ 27-12-2001: Message edited by: Drom ]</strong><hr></blockquote>
Drom, так как же насчет XOR ? Жалко, такая идея ... и заброшена ...
-
- Уже с Приветом
- Posts: 242
- Joined: 03 Jan 2000 10:01
- Location: TX > MA/NH > NJ/NYC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>
Drom, так как же насчет XOR ? Жалко, такая идея ... и заброшена ...</strong><hr></blockquote>
ага. XOR это не идея, XOR это решение: то ыесть в предложенном решении со сложением и вычитанием заменяем и то и другое на XOR.
другими словами XOR'им все числа из обоих массивов, результат - потерянное число.
<strong>
Drom, так как же насчет XOR ? Жалко, такая идея ... и заброшена ...</strong><hr></blockquote>
ага. XOR это не идея, XOR это решение: то ыесть в предложенном решении со сложением и вычитанием заменяем и то и другое на XOR.
другими словами XOR'им все числа из обоих массивов, результат - потерянное число.
-
- Уже с Приветом
- Posts: 242
- Joined: 03 Jan 2000 10:01
- Location: TX > MA/NH > NJ/NYC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong>
странно, что Вы сразу не написали ответ [img:67554779f7]images/smiles/icon_smile.gif[/img:67554779f7]
пусть
s1 = sum(X) - sum(Y) == s1
s2 = sum(X*X) - sum(Y*Y) == s2 // разница сумм квадратов
тогда
a + b == s1
a^2 + b^2 == s2
квадратное уравнение...</strong><hr></blockquote>
да, именно так [img:67554779f7]images/smiles/icon_wink.gif[/img:67554779f7] я только попытался ограничится, допустим, одним байтом для исходных чисел и сумм, потом получить что-то из того, что числа целые и на этом уснул. будет время - повожусь побольше.
впрочем у меня появилось подозрение, что мы занимаемся Error Correction Code'ами и таких "восстанавливающих"алгоритмов можно найти в сети.
<strong>
странно, что Вы сразу не написали ответ [img:67554779f7]images/smiles/icon_smile.gif[/img:67554779f7]
пусть
s1 = sum(X) - sum(Y) == s1
s2 = sum(X*X) - sum(Y*Y) == s2 // разница сумм квадратов
тогда
a + b == s1
a^2 + b^2 == s2
квадратное уравнение...</strong><hr></blockquote>
да, именно так [img:67554779f7]images/smiles/icon_wink.gif[/img:67554779f7] я только попытался ограничится, допустим, одним байтом для исходных чисел и сумм, потом получить что-то из того, что числа целые и на этом уснул. будет время - повожусь побольше.
впрочем у меня появилось подозрение, что мы занимаемся Error Correction Code'ами и таких "восстанавливающих"алгоритмов можно найти в сети.
-
- Уже с Приветом
- Posts: 3127
- Joined: 10 Apr 2001 09:01
- Location: MD
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
sort them both first, then it's easy. it'll be 2N(logN+1)
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
sort them both first, then it's easy. it'll be 2N(logN+1)
-
- Уже с Приветом
- Posts: 577
- Joined: 19 Oct 2000 09:01
- Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>
Drom, так как же насчет XOR ? Жалко, такая идея ... и заброшена ...</strong><hr></blockquote>
так вроде бы очевидно [img:9f2d5bf5d7]images/smiles/icon_smile.gif[/img:9f2d5bf5d7]
<strong>
Drom, так как же насчет XOR ? Жалко, такая идея ... и заброшена ...</strong><hr></blockquote>
так вроде бы очевидно [img:9f2d5bf5d7]images/smiles/icon_smile.gif[/img:9f2d5bf5d7]
-
- Уже с Приветом
- Posts: 577
- Joined: 19 Oct 2000 09:01
- Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by AK70:
<strong>sort them both first, then it's easy. it'll be 2N(logN+1)</strong><hr></blockquote>
АК70, Вы всегда так пишите в топики - не прочитав его сначала? [img:9a3e6081e0]images/smiles/icon_smile.gif[/img:9a3e6081e0] кроме того, сложность данного алгоритма - N*log(N)... 2N(logN+1) - это что? кол-во операций? каких? [img:9a3e6081e0]images/smiles/icon_smile.gif[/img:9a3e6081e0]
- занудствую [img:9a3e6081e0]images/smiles/icon_smile.gif[/img:9a3e6081e0]
[ 29-12-2001: Message edited by: Andy77 ]</p>
<strong>sort them both first, then it's easy. it'll be 2N(logN+1)</strong><hr></blockquote>
АК70, Вы всегда так пишите в топики - не прочитав его сначала? [img:9a3e6081e0]images/smiles/icon_smile.gif[/img:9a3e6081e0] кроме того, сложность данного алгоритма - N*log(N)... 2N(logN+1) - это что? кол-во операций? каких? [img:9a3e6081e0]images/smiles/icon_smile.gif[/img:9a3e6081e0]
- занудствую [img:9a3e6081e0]images/smiles/icon_smile.gif[/img:9a3e6081e0]
[ 29-12-2001: Message edited by: Andy77 ]</p>