|
156 / 158 / 93
Регистрация: 01.01.2010
Сообщений: 398
|
|
Напишите программу, которая по начальной суммуе денег у крестьянина определит оптимальное число проходов по мосту02.01.2010, 19:20. Показов 4186. Ответов 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
Напишите программу, которая определит первое отрицательное число последовательности...
|
|
Почетный модератор
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
|
||||||
| 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
|
|
|
Почетный модератор
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
|
|
| 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
|
|
|
Почетный модератор
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
|
|
| 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
|
|||||||||||
|
Почетный модератор
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
|
||
| 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) каждого студента по формуле Напишите программу, которая рассчитает оптимальное распределение заготовок по станкам
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period.
Это. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|