Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Информативный заголовок: разминка

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Информативный заголовок: разминка
Имя
Сообщение << Старые топики   Новые топики >>
Информативный заголовок: разминка - 2010-05-14 18:23:20.240000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
выбрав наугад два числа такие, что 2 <= x <= y <= 99, мы сообщаем человеку A их сумму, а человеку B - их произведение; обоим даётся задача найти исходные числа x и y. далее между ними происходит следующий диалог:

B: я не знаю чисел
A: я знаю, что ты не знаешь. я тоже не знаю
B: теперь я знаю числа
A: теперь я тоже их знаю

человек A и человек B - люди умные, и всего за четыре отвлечённых фразы они справляются с заданием. задача: написать и выложить в комментариях программу, которая найдёт загаданные числа, воспользовавшись приведённым диалогом. язык реализации - произвольный
Post #: 1
RE: Информативный заголовок: разминка - 2010-05-14 18:29:22.220000   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000
Потуплю немного. Программа должна найти ту пару чисел, которая привела А и В к результату?
Post #: 2
RE: Информативный заголовок: разминка - 2010-05-14 18:32:40.790000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Родригес

Потуплю немного. Программа должна найти ту пару чисел, которая привела А и В к результату?


программа должна найти числа x и y. в качестве исходных данных A знал их сумму x + y, а B знал их произведение x * y
Post #: 3
RE: Информативный заголовок: разминка - 2010-05-14 18:40:52.343333   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000
Ясно.
Post #: 4
RE: Информативный заголовок: разминка - 2010-05-14 18:51:17.860000   
furiousangel

Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
Если я правильно понял условие, то на php это должно выглядеть как-то так (код еще не проверял)
quote:


&lt;?php
$sum = $argv[1];
$mul = $argv[2];

for ($a=2; $a&lt;=99;$a++)
for ($b=$a; $b&lt;=99;$b++)
{
if (($mul==$a*$b) &amp;&amp; ($sum==$a+$b))
die("x=$a,y=$b");
}

Это брутфорсный вариант. Арифметический приводить думаю нет смысла:))

?&gt;
Post #: 5
RE: Информативный заголовок: разминка - 2010-05-14 18:51:28.806666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Числа целые?
Post #: 6
RE: Информативный заголовок: разминка - 2010-05-14 19:00:37.123333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Числа целые?


да
Post #: 7
RE: Информативный заголовок: разминка - 2010-05-14 19:01:53.263333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: furiousangel

это должно выглядеть как-то так


нет, не так
Post #: 8
RE: Информативный заголовок: разминка - 2010-05-14 19:03:04.900000   
furiousangel

Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
чего не так? Было проверено. Работает.
UPD: Точно не так). невнимательно прочитал условие. исправил в том же посте
Post #: 9
RE: Информативный заголовок: разминка - 2010-05-14 19:17:24.026666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: furiousangel

исправил в том же посте


приведённый диалог - существенная часть условия. может, в третий раз прочитаешь внимательно?
Post #: 10
RE: Информативный заголовок: разминка - 2010-05-14 19:17:32.290000   
Parano1d

Сообщений: 423
Оценки: 0
Присоединился: 2008-05-21 13:40:17.093333
furiousangel, в твоём примере известны $sum и $mul сразу. по условию они известны разным людям. по-моему брутфорс не является решением этой задачи
Post #: 11
RE: Информативный заголовок: разминка - 2010-05-14 19:21:59.066666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Вы в 7-й класс не ходили в школе или я не совсем понял, в чём фишка "диалога".

C#
using System; namespace Denaturat_01 { class Program { static void Main( string[] args ) { try { const int A = 8; const int B = 15; Console.WriteLine( "Input: A = {0}; B = {1};", A, B ); int d = Convert.ToInt32( Math.Sqrt( A * A - 4 * B ) ); int x = ( A - d ) / 2; // 3 int y = ( A + d ) / 2; // 5 Console.WriteLine( "Output: x = {0}; y = {1};", x, y ); } catch ( Exception ) { Console.WriteLine( "Answer not found" ); } finally { Console.ReadKey(); } } } }
Post #: 12
RE: Информативный заголовок: разминка - 2010-05-14 19:22:09.560000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Parano1d

по условию они известны разным людям


верно. так, человек А знает сумму чисел и ответы человека B; человек B знает произведение чисел и ответы человека A
Post #: 13
RE: Информативный заголовок: разминка - 2010-05-14 19:24:24.130000   
furiousangel

Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
quote:

ORIGINAL: Denaturat

quote:

ORIGINAL: furiousangel

исправил в том же посте


приведённый диалог - существенная часть условия. может, в третий раз прочитаешь внимательно?


Эм…. может….
Post #: 14
RE: Информативный заголовок: разминка - 2010-05-14 19:26:42.643333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Вы в 7-й класс не ходили в школе или я не совсем понял, в чём фишка "диалога".


второе. каждый знает только свою часть информации, и ничем кроме приведённых фраз они не обменивались: ни человек A, ни человек B не знают одновременно суммы и произведения чисел, у них есть только своя информация и её достаточно для нахождения решения
Post #: 15
RE: Информативный заголовок: разминка - 2010-05-14 19:27:17.546666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ладно, это не для меня. Я не знаю, откуда начать копать в этом диалоге.
Post #: 16
RE: Информативный заголовок: разминка - 2010-05-14 19:31:23.406666   
Parano1d

Сообщений: 423
Оценки: 0
Присоединился: 2008-05-21 13:40:17.093333
quote:

Ладно, это не для меня. Я не знаю, откуда начать копать в этом диалоге.

у меня единственное предположение, что с длины строк… но вряд ли)
Post #: 17
RE: Информативный заголовок: разминка - 2010-05-14 19:32:55.006666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Если числа произвольные - то их невозможно связать с этим диалогом.
Post #: 18
RE: Информативный заголовок: разминка - 2010-05-14 19:34:53.366666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Если числа произвольные - то их невозможно связать с этим диалогом.


ещё как возможно. спокойно оцени все данные которыми располагают A и B в каждый момент времени
Post #: 19
RE: Информативный заголовок: разминка - 2010-05-14 19:37:24.200000   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000

quote:

ORIGINAL: _SaZ_

Если числа произвольные - то их невозможно связать с этим диалогом.

Нет, числа не произвольные. Вышеописанный диалог с последующим ответом возможен только при одной паре чисел. Вот их и должна найти программа.
Post #: 20
RE: Информативный заголовок: разминка - 2010-05-14 19:37:57.570000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: Denaturat

ни человек A, ни человек B не знают одновременно суммы и произведения чисел, у них есть только своя информация и её достаточно для нахождения решения

Думаю очевидно, что в данном случае будет 98*98 = 9604 решений. Осталось привязать каждое из них к диалогу :)
Post #: 21
RE: Информативный заголовок: разминка - 2010-05-14 19:44:42.790000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Я предлагаю перефразировать условие, чтобы оно стало яснее.

Загадочный человек X выбрав наугад два числа такие, что 2 <= x <= y <= 99, сообщил (шёпотом, на ушко) человеку A их сумму, а человеку B - их произведение (тоже шёпотом). После чего X скрылся в неизвестном направлении.
Далее мы наблюдаем диалог:
B: я не знаю чисел
A: я знаю, что ты не знаешь. я тоже не знаю
B: теперь я знаю числа
A: теперь я тоже их знаю

человек A и человек B - люди умные, и всего за четыре отвлечённых фразы они справляются с заданием. задача: написать и выложить в комментариях программу, которая найдёт загаданные числа, воспользовавшись приведённым диалогом. язык реализации - произвольный

Итого, нам неизвестны никакие числа. Но тем не менее, зная диалог, мы можем их восстановить.
Post #: 22
RE: Информативный заголовок: разминка - 2010-05-14 19:44:54.773333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Родригес

Вышеописанный диалог с последующим ответом возможен только при одной паре чисел


вообще говоря, пара может быть и не единственной, хотя в данном случае это несущественно. усложнённый вариант данной задачи - определить корреляцию между размером диапазона и количеством решений; однако это уже нетривиально, потому не предлагаю
Post #: 23
RE: Информативный заголовок: разминка - 2010-05-14 19:46:40.570000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: rgo

Я предлагаю перефразировать условие, чтобы оно стало яснее.


благодарю
Post #: 24
RE: Информативный заголовок: разминка - 2010-05-14 19:58:29.276666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: _SaZ_
Ладно, это не для меня. Я не знаю, откуда начать копать в этом диалоге.

Я могу дать изначальное направление. Помнишь задачки про мудрецов/математиков с абсолютно логичным мышлением, прокачивающих все варианты за считанные секунды? Вот это задачка того типа.
Если задачка денатурата непонятна, начни с такой:
Пока три мудреца спали в лесу, злодей измазал им лица сажей. Мудрецы проснулись утром одновременно и одновременно посмотрели друг на друга. Увидев лица спутников измазанные сажей они все трое начали ржать. Но через две секунды, они вдруг прекратили ржать. Вопрос: почему мудрецы прекратили ржать?
Post #: 25
RE: Информативный заголовок: разминка - 2010-05-14 20:18:21.216666   
furiousangel

Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
Интересная задача. ПРоснувшись они увидели измазанные лица друг друга и начали смеяться. Но вспомнив, что костра они не разжигали и предположив, что на их лицах фекалии, стало несмешно %)
Post #: 26
RE: Информативный заголовок: разминка - 2010-05-14 22:01:47.356666   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Закралась мысль,что фишка в том, КАКИЕ сумму и произведение им сообщили. Из разговора можно предположить,что они таковы, что произведение может получаться из чисел диапазона [2,98] совсем небольшим числом способов,специфическое такое…причем такой способ из этих,чтобы ещё и сумма оставалась неясной реально один. Ergo, надо подумать о простых числах и набросать программочку с грамотным перебором их произведений…. Мб если ещё подумаю - осмыслю проблему получше….
Post #: 27
RE: Информативный заголовок: разминка - 2010-05-15 00:10:57.156666   
SmanxX1

Сообщений: 208
Оценки: 0
Присоединился: 2007-07-31 14:33:56.650000
Это больше не задачка, а загадка, причем старая.
Ответ один. =)
Post #: 28
RE: Информативный заголовок: разминка - 2010-05-15 00:36:41.320000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Человек А и человек В знают только свои числа или они еще знают о том, что были проведены операции перед тем, как они получили числа?
З.Ы. rgo, каждый из них перестал смеяться потому, что понял, что измазаны не только его соседи, но и он сам?
Post #: 29
RE: Информативный заголовок: разминка - 2010-05-15 00:48:44.456666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Lost_boy

Человек А и человек В знают только свои числа или они еще знают о том, что были проведены операции перед тем, как они получили числа?


в смысле? человек A знает, что ему сказали сумму искомых чисел; человек B знает, что ему сказали их произведение
Post #: 30
RE: Информативный заголовок: разминка - 2010-05-15 00:50:52.083333   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Все теперь ясно. А то я подумал что они не знают что это сумма и произведение соответственно, тогда задача показалась за гранью фантастики)
Post #: 31
RE: Информативный заголовок: разминка - 2010-05-15 00:51:01.660000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: SmanxX1

Это больше не задачка, а загадка, причем старая.
Ответ один. =)


ну так разгадай загадку - а лучше научи это делать компьютер, всё быстрее будет
Post #: 32
RE: Информативный заголовок: разминка - 2010-05-15 01:32:05.080000   
S00pY

Сообщений: 785
Оценки: 0
Присоединился: 2007-04-14 20:44:05.376666
Первый говорит тот что знает произведение чисел… и он говорит что он не знает,значит типо у него произведение не двух простых,так?
Post #: 33
RE: Информативный заголовок: разминка - 2010-05-15 01:45:11.630000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Но,зная сумму,его осеняет. Значит,произведение как-то просто раскладывается….блин, всегда бесила олимпиадная математика((.
Post #: 34
RE: Информативный заголовок: разминка - 2010-05-15 03:12:22.823333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: S00pY

так?


зачем спрашивать у меня, если можно проверить самостоятельно?
Post #: 35
RE: Информативный заголовок: разминка - 2010-05-15 03:14:25.406666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Genco

всегда бесила олимпиадная математика((.


никакой сложной математики здесь нет - исключительно умение извлекать максимум информации из минимума доступных данных
Post #: 36
RE: Информативный заголовок: разминка - 2010-05-15 03:36:52.236666   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
Ну подкину и я пару мыслей по теме.

1) у B не могло быть число, которое однозначно раскладывается на сомножители, например, у него не могло быть числа 14, т.к. у него есть всего одно разложение на простые сомножители (2 и 7), но могло быть число 18, т.к. его можно разложить более чем одним способом (2 и 9, 3 и 6).
2) А узнал об этом только исходя из суммы своих чисел. следовательно, он разложил своё число на все возможные комбинации и просчитал, что произведения любой из этих пар может быть разложено более, чем одним способом. иначе, могла бы быть пара чисел, произведение которых раскладывалось бы на сомножители однозначно и B его сразу же определил бы. к примеру, предположим, что у A было число 11, возможные варианты слогаемых, их произведений и возможных разложений:
слог. произв. возм. сомнож.
сумма: 11
2 + 9 => 18 => 2 и 9, 3 и 6 - подходит (неоднозначное разложение)
3 + 8 => 24 => 2 и 12, 3 и 8, 4 и 6 - подходит
4 + 7 => 28 => 2 и 14, 4 и 7 - подходит
5 + 6 => 30 => 2 и 15, 3 и 10, 5 и 6 - подходит

с другой стороны, если бы у А было число 20:
сумма 20:
2 + 18 => 36 => 2 и 18, 3 и 12, 4 и 9, 6 и 6 - подходит
3 + 17 => 51 => 3 и 17 - не подходит (число 51 однозначно раскладывается на 3 и 17)

То есть у А могло быть число 11, но не могло быть число 20.
3) Если у А было число 11, то у B могли быть числа 18, 24, 28 и 30 (см. выше). Предположим, что у него было число 18. Возможные варианты разложения: 2 и 9, 3 и 6. Следовательно, у А могут быть числа 2 + 9 = 11 (что полностью подпадает под логические выводы из первых двух фрах) и 3 + 6 = 9. Проделаем с числом 9 ту же процедуру, что делали с числом 11:
сумма: 9
2 + 7 => 14 - не подходит, однозначное разложение.
То есть, если у B число 18, то он может высчитать, что у A либо 9, либо 11, при этом зная логику А, он понимает, что если бы у А было число 9, то он бы не сказал "я знаю [что ты не можешь высчитать число]", следовательно, у А число 11, а исходные числа - 2 и 9.
4) после того, как B узнал свои числа и сказал об этом, А пытается узнать, из какого числа (18, 24, 28 или 30) B мог сделать такой вывод. Если числа 24, 28 и 30 отпадут (проверять уже не стану), то бинго! А может сделать вывод, что у B число 18, и следовательно x и y равны 9 и 2.

В принципе, всё это можно формализовать и записать в виде алгоритма, на вход которого подавать одно из чисел - сумму или произведение, но получится дико замутно и жутко некрасиво, а поскольку всё гениальное просто, должен быть другой, простой и элегантный способ. Есть такое подозрение, что способ этот будет начинаться с канонического разложения всех произведений числа B и анализом коэффициентов при слогаемых. Дальнейшие действия на время оставляю на произвол публики и возвращаюсь к более земным и насущным проблемам.
(надеюсь, когда вернусь, кто-нибудь придумает что-нибудь не такое замутное)
Post #: 37
RE: Информативный заголовок: разминка - 2010-05-15 03:40:40.953333   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
Да, и, насколько я понимаю, ни число человека А, ни число человека В основной программе не будет известно? В таком случае, необходимо просто перебрать все возможные значения B с неоднозначным разложением (по моим расчётам, их всего навсего 1343 :))
Post #: 38
RE: Информативный заголовок: разминка - 2010-05-15 13:39:53.690000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: kreol

В принципе, всё это можно формализовать и записать в виде алгоритма, на вход которого подавать одно из чисел - сумму или произведение


а можно не подавать ничего, кроме имеющихся фактов, и получить ответ
Post #: 39
RE: Информативный заголовок: разминка - 2010-05-15 15:32:03.310000   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666

quote:

ORIGINAL: Denaturat

а можно не подавать ничего, кроме имеющихся фактов, и получить ответ

Как я и сказал, если есть отработанный алгоритм проверки, можно прогнать все числа и посмотреть результат. Прогонять придётся около 2-3 тысяч пар чисел, что вполне терпимо. Если есть отработанный алгоритм.
Post #: 40
Страниц:  [1] 2
Все форумы >> [Компилируемые языки] >> Информативный заголовок: разминка







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.