Симметричная сумма |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Симметричная сумма |
Девченка |
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Женский Репутация: 0 |
Не могу решить.
Дано число. Прибавьте к нему число с переставленными в обратном порядке цифрами. То же самое проделайте с полученной суммой. Опыт показывает, что, повторяя эти действия некоторое число раз, вы непременно, рано или поздно, получите симметричное число, то есть такое число, которое одинаково читается слева направо и справа налево. Напишите программу, которая для введенного числа вычисляет количество действий, необходимых для получения симметричного числа. Например, 38+83=121, то есть одно действие, ответ равен "Шагов: 1, симметричная сумма: 121". Для некоторых чисел необходимо большое количество действий, например для 89 только 24-й шаг приводит к симметричному результату 8813200023188. Однако такие числа слишком велики для обычных целочисленных переменных, но ответ как-то получить нужно! Использовать в программе вещественные числа нельзя. Составьте программу или алгоритм нахождения симметричных сумм.Заранее спасибо |
IUnknown |
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
Цитата Для некоторых чисел необходимо большое количество действий, например для 89 только 24-й шаг приводит к симметричному результату 8813200023188. Это еще ничего, вот для числа 196 все гораздо интереснее : оно очень долго не образует палиндром, некоторые исследователи дожидались 50000 итераций (при этом длина строки достигала 26000), а палиндрома все не было. Другие - ждали дольше: до строки в 70928 символов длиной, но он так и не появился...Похоже, именно по этой причине список значений Sequence A016016 прерывается на n=195? А ты говоришь 89 "89" как раз очень просто решается: написать функцию, которая будет производить "сложение" строк (в смысле, сложение чисел, хранящихся в виде строк) - дело нескольких минут, и тебе обеспечена работа с числами до 256 символов длиной. А если понадобится больше (хорошо, если компилятор 32-битный)? Сообщение отредактировано: IUnknown - |
Текстовая версия | 20.05.2024 20:51 |