Автомат получает на вход четырёхзначное натуральное число и строит новое число по следующему алгоритму:
1. вычисляются суммы первой и второй, второй и третьей и третьей и четвёртой цифр;
2. из полученных сумм отбрасывается наибольшая;
3. остальные суммы записываются в порядке неубывания.
Пример. Исходное число:1284. Суммы: 1 + 2 = 3; 2 + 8 = 10; 8 + 4 = 12. Отбрасывается наибольшая сумма 12. Результат: 310. Укажите наибольшее число, при вводе которых автомат выдаёт значение 1114.
Объяснение:
Достаточно странное задание.
¬¬X = X
Попробуем доказать равенство методом от противного :
Пусть ¬¬X ≠ X:
Рассмотрим левую часть : ¬¬X ⇔ ¬(¬X)Перепишем это уравнение: ¬(¬X) ≠ X ( по идее это уже можно назвать док-вом)Подставим простое число 1 (чтобы доказать равенство в числах): ¬(¬1) ≠ 1 ⇔ ¬(0) ≠ 1 ⇔ 1 ≠ 1Получившееся выражение ( 1 ≠ 1 ) не верно , ⇒ ¬¬X = x , ч.т.д
Можно более простым смотря что от вас хотят увидеть) :
Пусть ¬¬X = X:
Преобразуем выражение : ¬¬X = X ⇔ ¬(¬X) = XПрименим инверсию к обеим частям : ¬X = ¬XПолучившееся выражение ( ¬X = ¬X ) верно , ч.т.д
Ну или сразу применить инверсию ко всему выражению (Идея взята у парня в комментариях к вопросу):
¬(¬¬X) = ¬X ⇔ ¬X = ¬X , ч.т.д
import math
for i in range(10, 99 + 1):
if math.sqrt(i % 10 * 10 + i // 10 + i) % 1 == 0:
print(i)
Пояснения:
Перебираем с цикла for список всех двузначных чисел, созданный с функции range(10, 99 + 1).
i % 10 * 10 + i // 10 — меняем местами десятки и единицы (например, 29 превращаем в 92):
i % 10 — получаем десяткиi // 10 — получаем единицыПотом добавляем к полученному наше исходное число (например, 29 превращается в 92 и к нему прибавляется 29). Из этой суммы находим квадрат с функции sqrt() из модуля math (мы его подключили первой строкой import math). Чтобы проверить, полный ли квадрат получается из этого числа, нужно проверить, имеет ли остаток полученный корень. Я нашел остаток от деления с конструкции root % 1. Если остаток равен нулю, то квадрат полный, следовательно выводим число в консоль с функции print().