Задача к ЕГЭ по информатике на тему «действия над цифрами числа» №6

Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам.

1. Из цифр, образующих десятичную запись N  , строятся наибольшее и наименьшее возможные двузначные числа (числа не могут начинаться с нуля).

2. На экран выводится разность полученных двузначных чисел.

Пример. Дано число N = 351  . Наибольшее двузначное число из заданных цифр – 53  , наименьшее – 13  . На экран выводится разность 53  13  = 40  .

Чему равно количество трёхзначных чисел N  , в результате обработки которых на экране автомата появится число 11  ?

Решение 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)

Ответ: 4
Оцените статью
Я решу все!