![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Nix |
|
|||
|
Unregistered |
Всем привет!
помогите решить задачку даны три числа 3-е является суммой 2 первых. Некоторые из цифр чисел заменены звездочкой нужно заминить эти звездочки правильными. Числа до 250 знаков. Решение вывести минимальное. Пример *** *** **2 должно получится 001 001 002 как я понял нужно рассмотреть несколько вариантов растоновки звездочек |-число 0..9 | * | | * * | * | | * | * | * * | | | * | * * * с первыми 4 случиями понятно а как с остальными? И как можно реализовать на паскале алгоритм решения линейных уравнениий методом Гауса для 500 уравнений. |
|||
|
||||
| St. Andrew |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.3.2005 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
Меня несколько настораживает сочетание выражений "некоторые цифры заменены звездочками" и "числа до 250 знаков". Если в числе 249 знаков (т.е. цифр) и некоторые из них заменить звездочками, то написание проблемы для общего случая кажется мне задачей вообще труднопостижимой. Может я чего-то недопонимаю...
Минимальным должно быть само решение или же число какое-то? Вообще я смысл задачи пока не просек.... Для 500 уравнений ИМХО алгоритм Гаусса реализуется также как и для трех Это сообщение отредактировал(а) St. Andrew - 4.11.2005, 00:49 --------------------
Оглянитесь вокруг! В мире так много прекрасного! |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
St. Andrew
Минимальными должныбыть все числа. пример *** *** **2 должно получится 001 001 002 а не 4 4 6 4 4 6 8 9 2 Насчет гауса там память кончается если создавать 500*501 матрицу. Там поидее нужно использовать другой алгоритм не как для 3. |
|||
|
||||
| St. Andrew |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.3.2005 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
Хорошо, я понял, что минимальными должны быть именно числа. Но все-таки...ведь написано, что числа до 250 знаков! Если бы было все так змечательно, как в твоем примере - дана последняя цифра суммы - то проблем не было бы. Но ведь ты пишешь про "некоторые" цифры, которые заменены звездочками...это как-то бредово, честно говоря. Я не могу себе представить алгоритм, который решает такую неопределенную задачу! Грубо говоря, тут даже количество переменных будет переменным...что-то вообще глухо...
А касательно Гаусса - матрица 500*500 - это примерно 1мб памяти, если речь идет о данных типа integer. В принципе - не так и много. Теоретически можно попробовать использовать динамически выделять память и освобождать ее при отсутствия необходимости в дальнейшем употреблении. Проблема в том, что я алгоритм уже помню несколько смутно Ну а касательно размера самой матрицы....чтобы с ней работать - ее полюбому нужно ввести. Так что от определенных затрат оперативы все равно никуда не уйти. --------------------
Оглянитесь вокруг! В мире так много прекрасного! |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Но там тип Real и в паскале можно использовать только 250кб динамической памяти тоеть до мегабайта не дотягивает. |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Элементарно. Достаточно понять что обрабатывается по 1 разряду от задницы - ибо то что правее не влияет на то что левее, т.к. обработано.
Придется кэшить на диск - но в принципе ничего сложного-то нет... кэшить предлагаю и строки, и столбцы, каждый - в отдельном файле (для 500*500 это 1001 файл). Динамически выделяем буферов по 501 элемент сколько получится и держим таблицу присутствия вектора в памяти - фактически идеология работы со свопом и виртуальной памятью, правда с учетом что любое изменение меняет 2 файла-вектора, а не 1. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| nix |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.11.2005 Репутация: нет Всего: нет |
Вот пример *** *** 1992 первя цифра влияет с чего ты начнеш составлять 996 996 1992 |
||||
|
|||||
| St. Andrew |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.3.2005 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
nix, еще вопросы:
1) Обязательно ли слагаемые должны быть равными? 2) Будут ли некоторые цифры заменены звездочками и в самих слагаемых, а не только в сумме. Алгоритм рождается в голове, но нужно точно знать условие. Дя твоих приведенных примеров достаточно просто заполнить звездочки в сумме нулями и поделить пополам --------------------
Оглянитесь вокруг! В мире так много прекрасного! |
|||
|
||||
| nix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.11.2005 Репутация: нет Всего: нет |
St. Andrew
1) нет 2)звездочки могут стоять везде. Могут быть хоть все звёздочки. |
|||
|
||||
| nix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.11.2005 Репутация: нет Всего: нет |
только осталось проверку зделать можно составить или нет но это легко извеняюсь что написано плохо(не красиво).
Это сообщение отредактировал(а) nix - 5.11.2005, 00:02 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Пример некорректен. Количество разрядов должно быть одинаково во всех 3 операндах. К тому же не определена до конца исходная задача - что есть "минимальное решение"? когда бОльшее из слагаемых наименьшее из всех возможных? или меньшее - наименьшее? или сумма? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| nix |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.11.2005 Репутация: нет Всего: нет |
Пример какрас коректен с чего это вы взяли что Количество разрядов должно быть одинаково во всех 3 операндах. Кстати задача решена можете посмотреть в преведущем сообщении. |
||||
|
|||||
| St. Andrew |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.3.2005 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
nix, я так и не понял, что именно работает
1*9 *8* *2* Программа выдала: 1*9 08* 12* Это разве то, что ты хочешь получить? Кстати, согласен с Akina - что именно значит "наименьшее" решение? Тем более, если у тебя разное количество разрядов в числах и все числа разные. Вспоминается тот факт, что программирование - это в общем-то математическая наука, а компьютер - лишь инструмент для воплощения и проверки алгоритмов. Думаю, что математиков бы решение этой задачи в общем виде не очень порадовало. З.Ы. А к чему вообще эта прога? Программируешь искусственный интелект? Это сообщение отредактировал(а) St. Andrew - 5.11.2005, 02:27 --------------------
Оглянитесь вокруг! В мире так много прекрасного! |
|||
|
||||
| nix |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.11.2005 Репутация: нет Всего: нет |
У меня всё нормально я её немножко потправил провер и потести плиз еще
Нет просто готовлюсь к олимпиаде.
Это к примеру нам дано ***1 ***1 ***2 надо вывести 0001 0001 0002 а не к примеру 4441 5551 9991 тоесть если есть несколько вариантов постоновки чисел то выбираем наименьшее. Это сообщение отредактировал(а) nix - 5.11.2005, 11:15 |
||||||
|
|||||||
| St. Andrew |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.3.2005 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
nix Сейчас - все нормально работает! Кстати, выровнять все числа по количеству разрядов - хорошая мысль! Меня все тянуло уменьшать количество знаков в наибольшем, а ты просто увеличил их число в более коротких числах! Молодец!
Кстати, для справки - ты обрабатываешь разряды чисел, начиная с левой стороны или с правой? --------------------
Оглянитесь вокруг! В мире так много прекрасного! |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |