|
156 / 158 / 93
Регистрация: 01.01.2010
Сообщений: 398
|
|
Напишите программу, которая по начальной суммуе денег у крестьянина определит оптимальное число проходов по мосту02.01.2010, 19:20. Показов 4231. Ответов 10
Метки нет (Все метки)
Задачка с одной из прошедших олимпиады.
Нужна помощь в решении. Вероятно на использование цикла, как я понимаю,потому и назвал так тему. Текст задачи: "Крестьянин, возвращаясь с ярмарки, увидел на мосту странную картину. Какой -то человек сначала считал деньги в кошельке, затем бросал в реку несколько монеток, бежал на другой конец моста, снова считал деньги в кошельке, опять бросал нексколько монеток и шел на другой конец моста. Наконец, пересчитав свои деньги, он явно обрадовался о отправился в дальнейший путь. - Что ты делал? Зачем ты бросал деньги в воду? - спросил крестьянин, догнав странного человека. Видя, что свой секрет скрыть не удастся, человек рассказал, что моск волшебный, что если бросить с моста ровно 29 копеек, то капк только перейдешь мост, количество рублей в оставшейся сумме денег превращаются в новой сумме в количество копеек, а копейки - в рубли и что, перейдя мост несколько раз, можно получить сумму, намного большую первоначальной. - Самое важно - вовремя остановиться, - сказал человек и ушел. Крестьянин задумался, достал кошелек и пересчитал свои деньги. У негОбыло 46 руб. 47 коп. "29 копеек не деньги, дай-ка попробую". После первого прохода у него получилось 18 руб. 46 коп., после второго прохода - 17 руб. 18 коп., а после третьего - 89 руб. 16 коп. "Ух" А ещё больше можно получить?" - обрадовался крестьянин. После четвертого прохода у него стало 87 руб. 88 коп., после пятого - 59 руб. 87 коп., после шестого - 58 руб. 59 коп., после седьмого - 30 руб. 58 коп., после восьмого - 29 руб. 30 коп., после девятого - 1 руб. 29 коп., а после десятого осталась 1 копейка. "Эх, дурачина, надо было после третьего раза остановиться!" - расстроился крестьянин. Напишите программу, которая по начальной суммуе денег у крестьянина определит оптимальное число проходов по мосту для получения наибольшей конечной суммы. Во входном файле в первой строке содержится целое число M - количество копеек, которые нужно бросать с моста (1<=M<=50). Во второй строке содержатся два целых числа R и K через пробел - начальная сумма денег у крестьянина, выраженная в рублях и копейках (0<=R<=99,0<=K<=99). В выходной файл вывести наименьшее количество проходов по мосту для получения максимально возможной суммы." Наработки есть, их много, но бредовые все... Не могу определиться в каком направлении идти да и вообще условие задачи не до конца понимаю. Спасибо заранее. Комментарии в программе приветствуются.
0
|
|
| 02.01.2010, 19:20 | |
|
Ответы с готовыми решениями:
10
Напишите программу, которая определит первое отрицательное число последовательности...
|
|
Почетный модератор
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
||||||
| 02.01.2010, 21:29 | ||||||
|
Разбор программы и написание ее с тестовыми файлами за Вами, а то вроде как в какой-то олимпиаде желаете победить.
1
|
||||||
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 03.01.2010, 13:50 | |
|
В строке 13: while s>=m do
А то иначе сумма может стать отрицательной
0
|
|
|
Почетный модератор
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
|
| 03.01.2010, 13:52 | |
|
odip, А ты проверь, я сначала тоже так написал.
Мы же ищем максимальную, пусть по ходу будет отрицательная.
0
|
|
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 03.01.2010, 14:45 | |
|
По ходу не может быть отрицательной.
По условию нужно 29 копеек (m) скинуть с моста. Если у меня имеется 5 копеек, то как я могу скинуть 29 копеек ?
0
|
|
|
Почетный модератор
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
|
| 03.01.2010, 15:27 | |
|
odip, Мы переводим рубли в копейки и вычитаем из этого числа. Если стало меньше 29, то конец цикла.
И вообще ты слишком много мыслишь, лучше сделай один раз и замолкни.
0
|
|
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|||||||||||
| 03.01.2010, 15:53 | |||||||||||
|
пример1)
Не учитывается что самым лучшим вариантом может быть не ходить через мост: Входные данные: m=1 r=1 k=1 У тебя пишет что максимальная сумма 1 коп после 1-го прохода. На самом деле максимальная сумма 1 руб 1 коп после 0-го прохода. пример2) я думал что простой перебор достаточен. Но оказывается что при некоторых начальных значениях происходит зацикливание. То есть сумма не уменьшается меньше чем m никогда !!! Входные данные: m=29 r=47 k=46 Чтобы сильно не мудрить я просто добавил проверку, что число циклов превысило 10000. Это значит что мы точно перебрали все варианты rub/kop от 0 до 99 и уже пошли по циклу. Вот моя программа
Для пример2 моя программа выводит:
1
|
|||||||||||
|
Почетный модератор
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
||
| 03.01.2010, 16:08 | ||
|
В задании
0
|
||
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 03.01.2010, 16:11 | |
|
Нулевое кол-во проходов - это если мы вообще не пошли через мост.
Если m=1 и у нас 1 руб 1 коп, то выгоднее всего вообще через мост не ходить. Тогда сумма будет максимальной - 1 руб 1 коп.
0
|
|
|
156 / 158 / 93
Регистрация: 01.01.2010
Сообщений: 398
|
|
| 03.01.2010, 17:42 [ТС] | |
|
Товарищи программисты, я, конечно, премного благодарен вам, но все таки, не могли бы вы пояснить переменные, в частности s например, ну и другие также для чего используется и т.д. Ну и также в программу внести комментарии где, что и для чего выполняется. Благодарю.
0
|
|
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 03.01.2010, 17:51 | |
|
m,r,k - это M,R,K из условия.
s - это сумма в копейках - сколько денег на руках. i - номер прохода. mx - наилучшая сумма в копейках mxi - номер прохода где достигается наилучшая сумма Суть данного алгоритма очень простая: Делаем проходы через мост и считаем сколько стало денег. Завершается цикл по условию (s<m) То есть когда на руках стало денег меньше чем нужно для оплаты прохода. Был обнаружен еще один вариант - программа может считать в цикле бесконечно. Поэтому добавлена проверка if i>10000 которая позволяет не зацикливаться. Понятно что всего мы имеем не более 10000 вариантов сумм на руках. Значит больше 10000 проходов быть не может и мы имеем зацикливание. В этом случае мы прерываем цикл и печатаем наилучший найденный вариант.
1
|
|
| 03.01.2010, 17:51 | |
|
Помогаю со студенческими работами здесь
11
Напишите рекурсивную функцию, которая определит, является ли заданное натуральное число первичным. Напишите программу , которая определит размер степендии (s) каждого студента по формуле Напишите программу, которая рассчитает оптимальное распределение заготовок по станкам
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|