Зашифрованное арифметическое выражение |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Зашифрованное арифметическое выражение |
Kirhog |
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Репутация: 0 |
Помогите пожалуйста решить такую задачу:
Задано арифметическое выпажение (сложение или вычитание) над неотрицательными десятичными целыми числами. Синтаксис выражения может быть следующим: первый операнд, оператор (+ или -) второй операнд, символ =, результат оператора (сумма или разность, в соответствии с оператором). Операнд не превышает 999 999 999. Для разности первый операнд должен быть больше или равен второму. В выражении не должно быть пробелов. Прописные латинские буквы замещают некоторые цифры (возможно включая ничего не значащие нули) так, что одинаковые буквы соответству одинаковым цифрам и различные буквы соответствуют различным цифрам. Это гарантирует, что в конце концов такое замещение будет сделано. Задача - восстановить замещенные цифры. Ввод: С клавиатуры вводится строка с зашифрованным арифметическим выражением. Вывод: Программа должна вывести несколько строк. Каждая строка описывает одно замещение и содержит букву и соответствующую ей цифру. Цифра и буква должны быть отделены ровно одним пробелом. Вывод должен быть отсортирован по возрастанию букв. Букв, не участвующих в замещении в списке быть не должно. Если задача имеет несколько решений, достаточно вывести одно из них. Пример ввода: 103K+G0G1=CG36 вывода: C 1 G 0 K 5 |
pascal65536 |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 62 Пол: Мужской Репутация: 1 |
Есть мнение - перебор. Будут другие варианты?
|
Atos |
Сообщение
#3
|
Прогрессор Группа: Пользователи Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
А задачка-то интересная... Может, чисто из любви к искусству стоит попробовать. Кто её задал и сколько времени даётся?
|
Atos |
Сообщение
#4
|
Прогрессор Группа: Пользователи Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
Теоретически, конечно, можно перебором, но может попасться такое выражение, что перебрать надо будет 10 в 9 степени значений. Преджде чем переходить к перебору, надо попытаться как-то разбить числа на разряды и ещё что-то в том же духе сделать. Если будет время, подумаю.
|
Kirhog |
Сообщение
#5
|
Группа: Пользователи Сообщений: 3 Репутация: 0 |
Эта задачка с городской олимпиады
|
Kirhog |
Сообщение
#6
|
Группа: Пользователи Сообщений: 3 Репутация: 0 |
По идее 1 или 3 секунды.
|
Текстовая версия | 3.11.2024 23:48 |