Задача 18: Виза (ИМ-2002 СамГУ)
Жители одного государства очень любят различные математические
головоломки. Даже тот, кто желает получить въездную визу, должен
решить задачу: отыскать ключевое слово. Условие задачи таково:
На листке написано несколько длинных чисел. Если сложить все цифры в
каждом числе, получатся новые числа. Далее, следует сложить все
цифры в каждом из вновь полученных чисел. Процесс следует продолжать
до тех пор, пока в результате не останутся числа, меньшие 10. После
этого все просто: числа от 0 до 9 - это номера букв в алфавите (в
этом государстве алфавит состоит всего из десяти букв). Замена чисел
буквами и дает ключевое слово.
Напишите программу, которая будет отыскивать ключевое слово.
Формат входного файла:
Первая строка - алфавит государства: десять букв расположенных по
возрастанию порядковых номеров без пробелов.
Вторая строка - количество чисел (N <= 255)
Следующие N строк - собственно исходные числа (по одному на строке,
в каждом не более 255 цифр).
Формат выходного файла:
Ключевое слово
Пример:
input.txt
АГЕИКЛМОРТ
4
8267
19929
54262
000000000000
output.txt
ЛИГА
Решение:
Первый раз до конца прочитал условие, пока печатал :). Вообще наша
команда всегда отличается быстрым стартом и завалом во второй части
соревнований, однако это не помешало нам занять второе место в этом
году :). Задача простая. Читаем в переменную string алфавит
государства. Затем перед нами встает две задачи - посчитать сумму
цифр в длинном и в коротком числе. Для длинного числа все просто -
складывае в одну переменную val всех символов строки (длинное число
удобно загнать в строку). Если получилось числе меньше 10 - то
выведем соответствующую ей букву в output. Если получилось число
большее 10, то его придется разделать в цикле while. Найдем сумму
цифр числа (summ := summ + A mod 10; A := A div 10) и в случае если
она больше 10, то присвоим числу значение суммы. При выводе символа
надо помнить, что символу в строке занумерованы 1..10, а на выход
будут подаваться числа 0..9, так что логично к выходному числу
прибавлять 1...
Далее
ð