Вася играет с друзьями. Вася берёт трёхзначное число, последнюю цифру вычёркивает и прибавляет её к полученному двузначному числу. Друзья должны найти возможное начальное число. Самый быстрый получает конфету.
Возможно несколько вариантов ответа. Засчитывается любой.
Дано двузначное число. Восстанови трёхзначное и выведи его.
В этой задаче может быть несколько правильных ответов. Ты можешь вывести любой. Твоя программа не должна выводить слова «Пример правильного ответа», нужно вывести только одно число.
Ввод Вывод
43 например, 367 или 394
Примечание: правильным выводом при вводе 43 может быть и 367, и 394.
36 + 7 = 43, 39 + 4 = 43. В правильном выводе должно быть ровно одно число.
Если ты вставляешь в редактор информацию из внешних источников, учитель может это увидеть. Подробнее: yandex.ru/legal/uchebnik_termsofuse/
8387
Хорошо, давайте разберём задачу подробно и по шагам.
Задача в математике:
- Пусть исходное трехзначное число имеет цифры a, b, c (a ∈ {1,…,9}, b ∈ {0,…,9}, c ∈ {0,…,9}).
- После действия: берём первые две цифры (образуют двузначное число ab = 10a + b) и прибавляем к нему последнюю цифру c.
- Данно число N — результат: ab + c = N.
- Нужно восстановить какое‑либо исходное трехзначное число abc.
Чтобы найти его, можно воспользоваться следующим алгоритмом:
1) Введём N (двузначное число, 10 ≤ N ≤ 99).
2) Подойдём к каждым a от 1 до 9 и найдём S = N − 10a.
3) Нужно, чтобы 0 ≤ S ≤ 18, потому что b + c = S, а b, c ∈ [0,9].
4) Если нашли подходящее a, то разложим S на двоё суммой:
- если S ≤ 9: возьмём b = S, c = 0;
- если S ≥ 10: возьмём b = 9, c = S − 9 (тогда c ≤ 9, так как S ≤ 18).
5) Получаем исходное число abc = 100a + 10b + c и выводим его.
Замечания:
- Для любого двузначного N в диапазоне 10–99 ровно одно или несколько значений a дадут 0 ≤ S ≤ 18, поэтому найдётся подходящее трицифровое число.
- Примеры для N = 43: можно получить разные ответы, например 430 (a=4, b=3, c=0), 367 (a=3, b=6, c=7), 394 (a=3, b=9, c=4) и т.д.
Пример пошагово для входного N = 43:
- Попробуем a = 4: S = 43 − 40 = 3 (0 ≤ S ≤ 18). S ≤ 9, значит b = 3, c = 0. Исходное число: 430.
- Другие варианты: a = 3 даёт S = 13, можно выбрать b = 9, c = 4 → 394; или b = 6, c = 7 → 367.
Короткая реализация (пояснение к коду):
- Мы перебираем a from 1 до 9, находим допустимый S = N − 10a, с 0 ≤ S ≤ 18.
- Затем строим b и c по правилу выше и выводим 100a + 10b + c.
Простой код на Python (одна корректная версия, выводит одно решение):
def find_initial(N):
for a in range(1, 10):
S = N - 10 * a
if 0 <= S <= 18:
if S <= 9:
b, c = S, 0
else:
b, c = 9, S - 9
return 100 * a + 10 * b + c
return None # на практике не должно происходить для корректного N
Пример использования:
- Ввод: N = 43
- Вывод функции: 430 (один из допустимых вариантов; можно выбрать и другой, например 367 или 394).
Обработка входа, если подано несколько чисел подряд (например, 8387):
- Если считать, что это два теста: N = 83 и N = 87.
- Для 83: a = 8 → S = 83 − 80 = 3 → b = 3, c = 0 → 830.
- Для 87: a = 8 → S = 7 → b = 7, c = 0 → 870.
- Т.е. можно вывести 830 и 870 по порядку, если требуется обработать несколько тестов.
Если хочешь, скажи конкретное двузначное число, и я дам одно допустимое исходное трехзначное число для него (пошагово по вашему запросу).