Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам.
1. Из цифр, образующих десятичную запись , строятся наибольшее и наименьшее возможные двузначные числа (числа не могут начинаться с нуля).
2. На экран выводится разность полученных двузначных чисел.
Пример. Дано число . Наибольшее двузначное число из заданных цифр –
, наименьшее –
. На экран выводится разность
–
=
.
Чему равно количество трёхзначных чисел , в результате обработки которых на экране автомата появится число
?
Решение 1
ans = 0
for i in range(100, 1000):
i = str(i)
a = []
for x in i:
a.append(int(x))
a = sorted(a) #сортируем массив по возрастанию
max_num = str(a[2]) + str(a[1])
if a[0] != 0 and a[1] != 0: #массив вида [1, 2, 3]
min_num = str(a[0]) + str(a[1])
elif a[1] != 0: #массив вида [0, 2, 3]
min_num = str(a[1]) + str(a[0])
else: #массив вида [0, 0, 3]
min_num = max_num
if int(max_num) - int(min_num) == 11:
ans += 1
print(ans)
Решение 2
from itertools import permutations
ans = 0
for i in range(100, 1000):
comb = permutations(str(i), r=2) # Перебор длины 2
maxim = 0
minim = 10000000
for j in comb:
s = ’’.join(j) # Преобразование в строку
if s[0] != ’0’:
maxim = max(maxim, int(s))
minim = min(minim, int(s))
if (maxim - minim) == 11:
ans += 1
print(ans)