Задано натуральное [latex]M[/latex]. Если число не палиндром – записываем его в обратном порядка и слагаем с заданным. Действия повторяем до тех пор, пока не получим число-палиндром. Количество выполненных операций назовем уровнем палиндромности заданного числа.
Найти уровень палиндромности заданного числа [latex]M[/latex].
Входные данные
Единственное число [latex]M (0 < M < 10000)[/latex].
Выходные данные
Единственное число – уровень палиндромности.
Задача взята с сайта e – olymp.
Тесты
Входные данные | Выходные данные |
1 | 0 |
79 | 6 |
101 | 0 |
198 | 5 |
865 | 2 |
9998 | 6 |
Алгоритм
В данной задаче для заданного числа требуется определить уровень его палиндромности – количество раз, которое придется просуммировать его с обратным ему числом до получения палиндрома.
- Для начала инициализируем счетчик, который хранит в себе текущее значение уровня палиндромности, и логическую переменную, значение которой ложно до тех пор пока палиндром не найден. Данное условие и будет критерием для выполнения тела основного цикла.
- Присвоив значения переменным в цикле, выполняем последовательный разбор введенного числа на цифры и сборку “зеркального” числа.
- Проверяем равенство числа и ему обратного.
- Выполнение условного оператора сигнализирует о том, что палиндром найден, следовательно выводим “уровень”, изменяем значение логической переменной на противоположное и выходим из цикла.
- В противном случае суммируем текущее число и “зеркальное”, инкрементируем счетчик.
- Повторяем пункты 2, 3, 5 до истинности пункта 3 и перехода к 4.
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) { long x, x1, x2; long c; int k = 0; Scanner sc = new Scanner(System.in); x = sc.nextInt(); boolean f = false; while (!f) { x1 = x; x2 = 0; while (x1 > 0) { c = x1 % 10; x1 /= 10; x2 = x2 * 10 + c; } if (x == x2) { System.out.format("%d", k); f = true; break; } else { x += x2; k++; } } } } |