Найти удаленное число

и задачки для интервью.
Drom
Уже с Приветом
Posts: 242
Joined: 03 Jan 2000 10:01
Location: TX > MA/NH > NJ/NYC

Найти удаленное число

Post by Drom »

<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>
wanderer
Новичок
Posts: 88
Joined: 05 Sep 1999 09:01
Location: CA, USA

Найти удаленное число

Post by wanderer »

<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>
Drom
Уже с Приветом
Posts: 242
Joined: 03 Jan 2000 10:01
Location: TX > MA/NH > NJ/NYC

Найти удаленное число

Post by Drom »

<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.
Andy77
Уже с Приветом
Posts: 577
Joined: 19 Oct 2000 09:01
Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA

Найти удаленное число

Post by Andy77 »

<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

квадратное уравнение...
wanderer
Новичок
Posts: 88
Joined: 05 Sep 1999 09:01
Location: CA, USA

Найти удаленное число

Post by wanderer »

<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 ? Жалко, такая идея ... и заброшена ...
Drom
Уже с Приветом
Posts: 242
Joined: 03 Jan 2000 10:01
Location: TX > MA/NH > NJ/NYC

Найти удаленное число

Post by Drom »

<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'им все числа из обоих массивов, результат - потерянное число.
Drom
Уже с Приветом
Posts: 242
Joined: 03 Jan 2000 10:01
Location: TX > MA/NH > NJ/NYC

Найти удаленное число

Post by Drom »

<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'ами и таких "восстанавливающих"алгоритмов можно найти в сети.
AK70
Уже с Приветом
Posts: 3127
Joined: 10 Apr 2001 09:01
Location: MD

Найти удаленное число

Post by AK70 »

<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)
Andy77
Уже с Приветом
Posts: 577
Joined: 19 Oct 2000 09:01
Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA

Найти удаленное число

Post by Andy77 »

<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]
Andy77
Уже с Приветом
Posts: 577
Joined: 19 Oct 2000 09:01
Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA

Найти удаленное число

Post by Andy77 »

<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>
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Найти удаленное число

Post by Dmitry67 »

А я вначале подумал что число удаленное - "remote", а не "removed"
AK70
Уже с Приветом
Posts: 3127
Joined: 10 Apr 2001 09:01
Location: MD

Найти удаленное число

Post by AK70 »

<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong>

АК70, Вы всегда так пишите в топики - не прочитав его сначала? [img:ad23401eb4]images/smiles/icon_smile.gif[/img:ad23401eb4] кроме того, сложность данного алгоритма - N*log(N)... 2N(logN+1) - это что? кол-во операций? каких? [img:ad23401eb4]images/smiles/icon_smile.gif[/img:ad23401eb4]

- занудствую [img:ad23401eb4]images/smiles/icon_smile.gif[/img:ad23401eb4]

[ 29-12-2001: Message edited by: Andy77 ]</strong><hr></blockquote>

ok, it's O(N*log2(N))

so, what's a prob with my perfect solution?

I guess there could be faster implementation. but, u have to spend time thinking about it. while my solution is so stupid that it will take no time to implement it.
Andy77
Уже с Приветом
Posts: 577
Joined: 19 Oct 2000 09:01
Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA

Найти удаленное число

Post by Andy77 »

<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by AK70:
<strong>I guess there could be faster implementation. but, u have to spend time thinking about it. while my solution is so stupid that it will take no time to implement it.</strong><hr></blockquote>

AK70, опять не прочитали топик? [img:f7ee8bafa6]images/smiles/icon_smile.gif[/img:f7ee8bafa6] в нём не только было предложено Ваше решение, но и найдено решение с линейной сложностью, посмотрите сами [img:f7ee8bafa6]images/smiles/icon_smile.gif[/img:f7ee8bafa6]
User avatar
Siberian Cableman
Уже с Приветом
Posts: 1222
Joined: 02 Jan 2002 10:01
Location: Bellevue, WA

Найти удаленное число

Post by Siberian Cableman »

To Drom
/напевая/ раскинулось поле по модулю пять, вокруг интегралы стояли...

Drom, are you from MEI (Moscow Power Engineering Institute ) may be?
Song is very simular.
Drom
Уже с Приветом
Posts: 242
Joined: 03 Jan 2000 10:01
Location: TX > MA/NH > NJ/NYC

Найти удаленное число

Post by Drom »

<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Siberian Cableman:
<strong>To Drom
/напевая/ раскинулось поле по модулю пять, вокруг интегралы стояли...

Drom, are you from MEI (Moscow Power Engineering Institute ) may be?
Song is very simular.</strong><hr></blockquote>

nope, sorry. from MIPT if it matters. and heard this song if memory still serves me in Bashkiria kind of seven years ago - so guess the song is pretty inter-national/institutional/whateveral [img:b6967f622f]images/smiles/icon_wink.gif[/img:b6967f622f]

Return to “Головоломки”