|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.06.2016, 19:52 | #1 |
Пользователь
Регистрация: 23.04.2016
Сообщений: 75
|
Главный вождь племени Абба не умеет считать. В обмен на одну из его земель вождь другого племени предложил ему выбрать одну
Привет, существует задача.. С первого взгляда она простая, но стоит углубиться и возникнут трудности...
Главный вождь племени Абба не умеет считать. В обмен на одну из его земель вождь другого племени предложил ему выбрать одну из трех куч с золотыми монетами. Но вождю племени Абба хочется получить наибольшее количество золотых монет. Помогите вождю сделать правильный выбор! Входные данные В первой строке входного файла INPUT.TXT записаны три натуральных числа через пробел. Каждое из чисел не превышает 10100. Выходные данные В выходной файл OUTPUT.TXT нужно вывести одно целое число — максимальное количество монет, которые может взять вождь. Примеры INPUT.TXT ||||OUTPUT.TXT 1 5 7 3 ||||7 2 987531 234 86364 ||||987531 3 189285 283 4958439238923098349024 ||||4958439238923098349024 =============================== Я попробовал ее решить через процедуры, запоминал числа массивами и выводил так же.. Осталось самое главное сравнение трех массивов, получается. Этого я сделать не смог. ВОт код: Код:
|
14.06.2016, 20:51 | #2 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
В данной задаче именно длинная арифметика не очень-то и нужна.
Т.к. считываешь отдельные символы/цифры в массив. В результате - три массива. Тот что длиннее - тот и больше. А при равной длине - придётся сравнивать поразрядно начиная со старшего. Современный Pascal (Delphi/FPC/PABC.NET) оперирует со строками значительных размеров. Это я к тому, что можно схалтурить и часть работы по длинной арифметике переложить на Runtime Library - сравнение строк. Кстати, если идти вашим способом, ввод можно организовать так Код:
|
14.06.2016, 21:03 | #3 |
Пользователь
Регистрация: 23.04.2016
Сообщений: 75
|
FPaul, знаете, я тоже хотел идти преобразованием массивов в строки, потом сравнивать длину их. И правильно вы заметили, длина может совпадать. Тогда придется сравнивать по первому символу строки и так далее.. Но на мой взгляд, это не совсем оптимизировано, потому жду лучших вариантов =)
|
14.06.2016, 21:08 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
10100 это 10^100? Дык вполне обычная строка и для турбо паскаля. Нолик впереди не должен быть по идее, как-то натуральность не вяжется с ведущим нулем. Какая строка длиннее, та и победила. При равенстве длин - просто какая больше обычным сравнением. По-разрядное сравнение ни к чему. Даже если очень вдруг нолики впереди - их можно отбросить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 14.06.2016 в 21:10. |
15.06.2016, 00:11 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Что было, то и будет; и что делалось, то и будет делаться, и нет ничего нового под солнцем. Бывает нечто, о чем говорят: "смотри, вот это новое"; но это было уже в веках, бывших прежде нас. Нет памяти о прежнем; да и о том, что будет, не останется памяти у тех, которые будут после. Всё уже было: Олимпиадная задача "Золото племени АББА" на Pascal (№7 с acmp.ru) |
15.06.2016, 12:12 | #6 | |
Пользователь
Регистрация: 23.04.2016
Сообщений: 75
|
Цитата:
P.S. если не подключать библиотеки, содержащие такие типы и классы) Последний раз редактировалось NikiToZz_; 15.06.2016 в 12:21. |
|
15.06.2016, 12:22 | #7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
10^100 - откуда 400 цифр?
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
15.06.2016, 13:06 | #8 |
Пользователь
Регистрация: 23.04.2016
Сообщений: 75
|
Не могу успокоиться =) Доделал программу, сравниваю числа функциями перебора массивов..
Возникает RunError(2) на 95 строке (здесь: Код:
Код:
|
15.06.2016, 13:42 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
в ваших нагромождениях кода даже разбираться не хочется...
Да и алгоритмы для решения используются, мягко говоря, не ахти. Если я правильно понял, Вы три раза вызываете ТРИ разные процедуры, чтобы сравнить одни и те же массивы? Не приходило в голову, что нужна ОДНА процедура, которая сравнивает ДВА массива и возвращает результат, какой из них больше или возвращает больший из массивов?! а что касается ошибки. 1) проверьте, что Вы нигде не описали переменные Input и Output (если описали - удалите описание этих предопределённых переменных). 2) прямо в начале программы напишите строго так, как рекомендовано в методичке на сайте: Код:
|
15.06.2016, 13:46 | #10 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
NikiToZz_, посмотри на такую реализацию.
Я оформил ввод по условию - в строке три числа Код:
Код:
Для решения задачи с acmp.ru во избежании ненужного копирования лучше сравнивать по указателям и возвращать указатель на максимальное число. Последний раз редактировалось FPaul; 15.06.2016 в 13:51. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Олимпиадная задача "Золото племени АББА" на Pascal (№7 с acmp.ru) | Ghost3 | Помощь студентам | 19 | 17.01.2013 21:04 |
Сравнить две программы. Одну из самых первых и одну из последний | coNsept | Свободное общение | 8 | 23.03.2012 23:21 |
Выбрать одну таблицу или много | grom333 | БД в Delphi | 7 | 12.10.2011 02:51 |
какой выбрать протокол, если есть сервер в интернете, и клиент должен передать ему команды | anyx | Работа с сетью в Delphi | 3 | 25.09.2009 23:13 |
Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки | urgu_st | Помощь студентам | 13 | 23.10.2007 09:14 |