Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560

За два взвешивания определить которая из пяти монет имеет вес, отличный от остальных

17.11.2013, 23:32. Показов 9865. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Понимаю, что оффтоп, но задача для острого программерского ума.
Олимпиадная задача для 7 класса, условие:

Есть 5 монет. 4 из них по 5 грамм, пятая - неизвестно (либо больше, либо меньше пяти - это неизвестно).
Есть грузик на 5 грамм. За 2 взвешивания определить, где монета, которая НЕ 5 грамм.
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2013, 23:32
Ответы с готовыми решениями:

Среди 13 монет есть одна отличающаяся по весу, за 3 взвешивания на чашечных весах найти ее
Известно, что среди 13 монет есть одна отличающаяся по весу (фальшивая - тяжелее она или легче –...

За 3 взвешивания на весах найти из 25 монет фальшивую
Доброго всем здравия, на этом форуме была задача, за 3 взвешивания на весах найти из 25 монет,...

Взвешивания монет
Дано 12 монет, 1 монета либо легче либо тяжелее остальных. Как за 3 взвешивания определить эту...

56
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,230
Записей в блоге: 2
26.02.2026, 14:17
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от alexu_007 Посмотреть сообщение
Я читал тему.
Вы прочли стартовый пост. Посмотрите посты #14, #20, #21

Вообще какое-то "упоение" от решения что указано 12 лет назад. Как насчет общности? Как вообще решаются такие задачки (метод)? Стоит немного изменить условие, один вариант уже предлагал выше, ну ладно, еще хотя бы
Все как в стартовом посте, только число фальшивых - любое
Или просто
Все как в стартовом посте, только др число монет (напр 6, 7, 8..)
Конечно искать надо мин число взвешиваний

И что, опять начинать с нуля? Или мы уже знаем как решать?
0
 Аватар для vlisp
1121 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,448
26.02.2026, 16:59
при чем тут вообще программирование? почему админы не перенесут тему куда подальше?
0
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
26.02.2026, 17:07
Цитата Сообщение от vlisp Посмотреть сообщение
при чем тут вообще программирование?
Ни при чем. Это задача на логическое мышление, которое программисту необходимо, особенно на стадии выбора алгоритмов решения проблемы.
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,230
Записей в блоге: 2
26.02.2026, 19:52
Цитата Сообщение от VAF34 Посмотреть сообщение
Это задача на логическое мышление, которое программисту необходимо, особенно на стадии выбора алгоритмов решения проблемы.
"Необходимость" весьма спорна. Лично я не припомню ни одного случая когда по работе требовалось хоть что-то подобное. Конечно иметь/показать силу своего логического мЫшления каждому приятно - это нормально
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
26.02.2026, 23:12
Цитата Сообщение от vlisp Посмотреть сообщение
при чем тут вообще программирование?
если решать только конкретное задание ТС, то программирование здесь ни при чем

но, видишь ли, Igor3D предлагает написать код, который будет находить решение для произвольного количества монет, типа пользователь вводит количество монет по 5 г, и количество монет не по 5 г, а программа показывает пошагово, как оптимально решать. Можно даже усложнить, сделав так, что нужно ввести вес каждой монеты.
0
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
27.02.2026, 12:57
Цитата Сообщение от Royal_X Посмотреть сообщение
который будет находить решение
Это задача на распознавание, решается цепочкой условных операторов или построением нейронной сети и ее обучения. Первый способ предпочтительнее, так как ответ не будет иметь случайной составляющей. Но в первом случае сразу не очевидно как построить алгоритм для получения минимального количества взвешиваний.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8679 / 4516 / 1670
Регистрация: 01.02.2015
Сообщений: 13,957
Записей в блоге: 14
27.02.2026, 19:58
Мне кажется, что обобщённое решение для одной дефектной монеты и грузика будет строится не по принципу деления на 2 части, а по принципу деления на 3 части.

Имеем некоторое количество монет N.
Разделим их на 3 примерно равные группы по M, M и K монет в каждой (M+M+K=N).
За 2 взвешивания определяем группу с дефектной монетой:
1. Взвешиваем первые две группы M и M - при равенстве весов принимаем, что дефектная монета в третьей группе
2. Если M и M не равны по весу, то в третьей группе все монеты хорошие и можем сравнить вес третьей группы с первой группой, уравняв количество монет переносом 1-2 монет из первой группы во вторую. Взвешивание позволит оставить первую или вторую (увеличенную) группу на дальнейшее рассмотрение.

И так повторять, пока не останется 2-3 монеты. Одна отсеется взвешиванием и останется 2 монеты.

В конце останется 2 монеты - сравнить любую из них с грузиком или с одной из признанной эталонной.

В программе помимо массива весов будет и массив признаков качества монеты.

Это обобщённая идея. Возможно, немного потребующая доработки при реализации.
0
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
28.02.2026, 09:43
Что-то мы заговорились! Общая постановка: любое количество монет двух типов является классической задачей кластеризации. Решать ее при помощи программы можно многими способами, а вот найти простейший способ - это высший пилотаж.
0
 Аватар для vlisp
1121 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,448
28.02.2026, 10:58
Цитата Сообщение от Royal_X Посмотреть сообщение
предлагает написать код
Для начала определитесь с компилятором/иде, потом напишете окно, из которого алгоритм будет получать входные данные
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
28.02.2026, 11:01
VAF34, если будет всего одна фальшивая монета, то любая программа без проблем справится даже с большим количеством монет.
Но вот если поменять задачу и допустить, что фальшивых монет может быть и больше 1, то при большом количестве монет обычные алгоритмы не справятся, поскольку вычислительная скорость очень быстро возрастет.
Тут только остаётся два варианта: нейросеть, которая попытается создать эффективную эвристическую стратегию, или квантовый компьютер.
0
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
28.02.2026, 17:31
Цитата Сообщение от Royal_X Посмотреть сообщение
при большом количестве монет обычные алгоритмы не справятся
Алгоритмы, это такие звери, которые просто описывают, что и в каком порядке надо делать. Если на этапе написания алгоритма непреодалимые трудности, то надо менять того, кто его пишет. Пришлите задачу с монетами для решения которой, по вашему, непреодалимые проблемы.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
28.02.2026, 17:57
Цитата Сообщение от VAF34 Посмотреть сообщение
Пришлите задачу с монетами для решения которой, по вашему, непреодалимые проблемы.
ты посты из этой темы не читаешь и тебе нужно отправить отдельное приглашение по почте? Ну хорошо, могу повторить еще раз:
"если поменять задачу и допустить, что фальшивых монет может быть и больше 1, то при большом количестве монет обычные алгоритмы не справятся, поскольку вычислительная скорость очень быстро возрастет".
Напоминаю, что задача состоит в том, чтобы найти самое оптимальное решение. Написать говнокод (особенно в эпоху ИИ), который найдет не самый оптимальный порядок взвешиваний может любой школоло. Но нужно, чтобы программа нашла решение задачи с минимальным количеством взвешиваний. И проблема даже не в написании кода, а в том, что программа будет очень долго думать при большом количестве монет, поскольку вычислительная скорость будет быстро расти.

Цитата Сообщение от VAF34 Посмотреть сообщение
Если на этапе написания алгоритма непреодалимые трудности, то надо менять того, кто его пишет.
быть самоуверенным это хорошо, но не помешало бы тебе немного прочесть об алгоритмах, об алгоритмически неразрешимых задачах или о разрешимых, но NP-трудных задачах. Я к тому, что не всегда программист виноват. Есть задачи, которые просто сложно поддаются обычным алгоритмам.
0
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
28.02.2026, 18:27
При любом количестве монет различных весов любой из нас легко справляется. Алгоритм таков: на весы две первых монеты, если равны, то первый вес найден. Откладываем одну из них в первую коробку и сравниваем все оставшиеся с одной из первых, пополняя коробку. Идея понятна. Если первое взвешивание дает неуравновешенное состояние, то перебираем все оставшиеся с первой, отбирая совпадения. Описанное есть черновик алгоритма и никакого отношения к количеству монет ни к быстродействию алгоритм не имеет. Он сам по себе, конечный продукт творчества.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
28.02.2026, 18:32
Цитата Сообщение от VAF34 Посмотреть сообщение
Алгоритм таков: на весы две первых монеты, если равны, то первый вес найден. Откладываем одну из них в первую коробку и сравниваем все оставшиеся с одной из первых, пополняя коробку.
твой алгоритм не является самым оптимальным

Цитата Сообщение от Royal_X Посмотреть сообщение
Напоминаю, что задача состоит в том, чтобы найти самое оптимальное решение. Написать говнокод (особенно в эпоху ИИ), который найдет не самый оптимальный порядок взвешиваний может любой школоло. Но нужно, чтобы программа нашла решение задачи с минимальным количеством взвешиваний.
грубо говоря, ты описываешь решение совсем другой задачи - задачи, в которой просто нужно отсортировать монеты посредством взвешиваний и никаких условий к количеству взвешиваний не ставится. Для этой задачи, действительно, можно написать код, который легко справится даже с большим количеством монет.

Но я тут писал про совсем другую задачу, в разы сложную, которую нужно решить за минимальное количество взвешиваний.
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,230
Записей в блоге: 2
28.02.2026, 18:49
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Мне кажется, что обобщённое решение для одной дефектной монеты и грузика будет строится не по принципу деления на 2 части, а по принципу деления на 3 части.
А я думаю на 4 части (кто больше ). Хотя можно и больше частей, производительность если и упадет, то не сильно

Разбиваем на 4 равные части M1, M2, M3, M4 (число монет в частях должно отличаться макс на 1)
Взвешиваем любые 2, напр M1, M2 (если надо юзаем грузик)
Если равны - отбрасываем взвешенные части, иначе оставшиеся
В итоге на каждой итерации число монет вдвое меньше (желанный O(log(N))

Последние итерации (5 и меньше монет) лучше захардкодить.
Если же известно что фальшивая точно легче (или точно тяжелее), то все проще, банальное разбиение пополам.

И все это, увы, "для одной дефектной монеты" (и только одной). Впрочем, и так можно тупо каждую взвесить с грузом, это O(n), бороться за оптимизацию здесь не актуально
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
28.02.2026, 20:55
Igor3D, представь такую задачу: на вход программе задается одно число - размер куба, а дальше задаются разрешимые радиусы сфер и количество доступных сфер для каждого радиуса. Подразумевается, что куб находится в точке (0, 0, 0). Нужно куб максимально заполнить сферами (т.е. важно не максимально возможное количество заполненных сфер, а максимально возможный суммарный объем сфер).
Программа должна вывести для каждой сферы радиус и координату центра. Или чтобы не повторять радиусы, то для каждого использованного радиуса вывести список координат центров сфер.

Вот эта задача интересна и имеет прикладное значение. Но вот если поменять условие на "заполняйте куб сферами как хотите", то согласись, что задача превратится в ахинею. То же самое с этой задачей про монеты. Если убрать условие про поиск оптимального решения, то задача решается тривиально и, собственного говоря, тут многие даже описали решение.
0
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
01.03.2026, 08:18
Цитата Сообщение от VAF34 Посмотреть сообщение
найти простейший способ - это высший пилотаж.
_
Именно так я писал много раньше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.03.2026, 08:18

Определить фальшивую монету за заданое число взвешиваний среди указанного количества золотых монет
Есть 25 золотых монет. Одна из них фальшивая и она по весу меньше. Определить за 3 взвешивания...

Найти минимальное число взвешиваний монет на чашечных весах, чтобы определить фальшивку
Есть 15 монет,одна из них фальшивая.Та,что фальшивая весит меньше.Нужно найти минимальное число...

За какое наименьшее количество взвешиваний можно обнаружить фальшивую монету?
Среди N монет существует одна фальшивая, которая легче других. Остальные имеют одинаковый вес. Есть...

Найти фальшивую монету за заданное количество взвешиваний
Недавно узнал про эту известную задачку, написал тестовую кату на одном сайте компьютерных задачек...

Какое минимальное количество взвешиваний на чашечных весах потребуется, чтобы гарантированно найти фальшивую монету?
Дано некоторое количество монет, среди них одна фальшивая, которая имеет меньший вес. Какое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru