Потом добавляем к полученному наше исходное число (например, 29 превращается в 92 и к нему прибавляется 29). Из этой суммы находим квадрат с функции sqrt() из модуля math (мы его подключили первой строкой import math). Чтобы проверить, полный ли квадрат получается из этого числа, нужно проверить, имеет ли остаток полученный корень. Я нашел остаток от деления с конструкции root % 1. Если остаток равен нулю, то квадрат полный, следовательно выводим число в консоль с функции print().
Рассмотрим различные варианты слов из 20 букв, которые содержат 18 букв Т (звёздочка обозначает любую из оставшихся 10 букв): ТТТТТТТТТТТТТТТТТТ** ТТТТТТТТТТТТТТТТТ**Т ... **ТТТТТТТТТТТТТТТТТТ - 19 вариантов
ТТТТТТТТТТТТТТТТТ*Т* ТТТТТТТТТТТТТТТТ*ТТ* ТТТТТТТТТТТТТТТ*ТТТ* ... *ТТТТТТТТТТТТТТТТТТ* - 18 вариантов
Вместо каждой из "*" может стоять любой из десяти символов (кроме Т), то есть на каждую из 190 перестановок мы имеем 10^2 = 100 вариантов распределения остальных символов на месте звёздочек. Общее количество вариантов = 190*100 = 19000
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().
ТТТТТТТТТТТТТТТТТТ**
ТТТТТТТТТТТТТТТТТ**Т
...
**ТТТТТТТТТТТТТТТТТТ - 19 вариантов
ТТТТТТТТТТТТТТТТТ*Т*
ТТТТТТТТТТТТТТТТ*ТТ*
ТТТТТТТТТТТТТТТ*ТТТ*
...
*ТТТТТТТТТТТТТТТТТТ* - 18 вариантов
ТТТТТТТТТТТТТТТТ*Т*Т
ТТТТТТТТТТТТТТТ*ТТ*Т
ТТТТТТТТТТТТТТ*ТТТ*Т
...
*ТТТТТТТТТТТТТТТТТ*Т - 17 вариантов
...
Т*Т*ТТТТТТТТТТТТТТТТ
*ТТ*ТТТТТТТТТТТТТТТТ - 2 варианта
*Т*ТТТТТТТТТТТТТТТТТ - 1 вариант
19+18+17+...+2+1 = 190
Для решения задачи можно также использовать формулу для вычисления числа перестановок с повторениями:
P(nт,n*) = (18+2)!/(18!*2!) = 20!/(18!*2!) = 19*20/2 = 190
Вместо каждой из "*" может стоять любой из десяти символов (кроме Т), то есть на каждую из 190 перестановок мы имеем 10^2 = 100 вариантов распределения остальных символов на месте звёздочек.
Общее количество вариантов = 190*100 = 19000