Тема 5. Простейшие исполнители и алгоритмы
5.03 Работа с цифрами числа
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела простейшие исполнители и алгоритмы
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#30288

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

  1. Складываются квадраты цифр, стоящих на нечетных позициях;
  2. Складываются квадраты цифр, стоящих на четных позициях;
  3. Затем в порядке возрастания записываются эти суммы.

Укажите наибольшее число, при вводе которого автомат выдает число 61100  .

Пример. Дано число 12345.  Алгоритм работает следующим образом:

  1. 11 + 32 + 52 = 35  ;
  2.  2   2
2 + 4 = 20  ;
  3. Полученное число — 2035  .
Показать ответ и решение

Решение программой:

for i in reversed(range(10 ** 4, 10 ** 5)):
    s = str(i)
    odd = 0
    even = 0
    for j in range(len(s)):
        if (j + 1) % 2 == 1:
            odd += int(s[j]) ** 2
        else:
            even += int(s[j]) ** 2
    if str(min(odd, even)) + str(max(odd, even)) == ’61100’:
        print(i)
        break

Ответ: 86650

Ошибка.
Попробуйте повторить позже

Задача 2#30287

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

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

Пример. Исходное число: 12345  . Суммы: 1+ 2 = 3;3 +4 = 7;1+ 5 = 6  . Максимальное: 7  , тогда результат: 36  . Укажите наибольшее число, в результате обработки которого автомат выдаст число 311  .

Показать ответ и решение

Решение программой:

for i in reversed(range(10 ** 4, 10 ** 5)):
    s = str(i)
    x01 = int(s[0]) + int(s[1])
    x23 = int(s[2]) + int(s[3])
    x04 = int(s[0]) + int(s[4])
    minim = min(x01, x23, x04)
    sr = sum([x01, x23, x04]) - minim - max(x01, x23, x04)
    if str(minim) + str(sr) == ’311’:
        print(i)
        break

Ответ: 99302

Ошибка.
Попробуйте повторить позже

Задача 3#30286

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

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

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

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

Чему равно количество чисел N  на отрезке [500;700]  , в результате обработки которых на экране автомата появится число 41  ?

Показать ответ и решение
from itertools import permutations  
 
ans = 0  
for i in range(500, 701):  
    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) == 41:  
        ans += 1  
print(ans)

Ответ: 2

Ошибка.
Попробуйте повторить позже

Задача 4#30285

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

  1. Перемножаются первая и четвёртая, а также вторая и третья цифры исходного числа.
  2. Полученные два числа записываются друг за другом в порядке неубывания (без разделителей).

Пример. Исходное число: 5819  . Произведения: 5⋅9 = 45;8 ⋅1 = 8  . Результат: 845  . Укажите наименьшее число, в результате обработки которого автомат выдаст число 964  .

Показать ответ и решение

Решение программой:

for i in range(1000, 10000):
    n = str(i)
    a = int(n[0]) * int(n[3])
    b = int(n[1]) * int(n[2])
    s = str(min(a, b)) + str(max(a, b))
    if s == ’964’:
        print(i)
        break

Ответ: 1889

Ошибка.
Попробуйте повторить позже

Задача 5#30284

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

1. Перемножаются первая и вторая, вторая и третья, а также третья и четвертая цифры исходного числа.

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

2. Оставшиеся два числа записываются друг за другом в порядке убывания (без разделителей).

Пример. Исходное число: 1234. Произведения: 1 × 2 = 2; 2 × 3 = 6; 3× 4 = 12  . Максимальное: 12  , тогда результат: 62  . Укажите наибольшее число, в результате обработки которого автомат выдаст число 1816  .

Показать ответ и решение
for i in reversed(range(1000, 10000)):  
    n = str(i)  
    a = int(n[0]) * int(n[1])  
    b = int(n[1]) * int(n[2])  
    c = int(n[2]) * int(n[3])  
    s = str(a + b + c - max(a, b, c) - min(a, b, c)) + str(min(a, b, c))  
    if s == ’1816’:  
        print(i)  
        break

Ответ: 9928

Ошибка.
Попробуйте повторить позже

Задача 6#30283

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

1. Вычисляются три числа — сумма старших разрядов заданных трехзначных чисел, сумма средних разрядов этих чисел, сумма младших разрядов.

2. Полученные три числа записываются друг за другом в порядке невозрастания (без разделителей).

Пример. Исходные трехзначные числа: 835  , 196  . Поразрядные суммы: 9  , 12  , 11  . Результат: 12119

Какое наибольшее значение может иметь одно из чисел, полученных на входе, если другое число равно 654  , а в результате работы автомата получено число 1187  ?

Показать ответ и решение
a = str(654)  
for i in reversed(range(100, 1000)):  
    s = str(i)  
    arr = [int(a[0])+int(s[0]), int(a[1])+int(s[1]), int(a[2])+int(s[2])]  
    arr = list(reversed(sorted(arr)))  
    arr = [str(j) for j in arr]  
    if ’’.join(arr) == ’1187’:  
        print(i)  
        break

Ответ: 533

Ошибка.
Попробуйте повторить позже

Задача 7#30282

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

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

Ошибка.
Попробуйте повторить позже

Задача 8#30281

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

1. Складываются первая и вторая, вторая и третья, а также третья и четвертая цифры исходного числа.

2. Из полученных трёх чисел выбираются два наибольших и записываются друг за другом в порядке убывания без разделителей.

Пример. Исходное число: 4781. Суммы: 4 + 7 = 11; 7 + 8 = 15; 8 + 1 = 9. Наименьшая сумма: 9. Результат: 1511. Укажите наименьшее число, в результате обработки которого автомат выдаст число 1412.

Показать ответ и решение
for i in range(1000, 10000):  
    s = str(i)  
    x01 = int(s[0]) + int(s[1])  
    x12 = int(s[1]) + int(s[2])  
    x23 = int(s[2]) + int(s[3])  
    a = sorted([x01, x12, x23])  
    if str(a[-1]) + str(a[-2]) == ’1412’:  
        print(i)  
        break

Ответ: 1395

Ошибка.
Попробуйте повторить позже

Задача 9#30280

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

1. Складываются первая и вторая, а также вторая и третья цифры исходного числа.

2. Полученные два числа записываются друг за другом в порядке невозрастания (без разделителей).

Пример. Исходное число: 249. Суммы: 2 + 4 = 6;4+ 9 = 13  . Результат: 136.

Укажите наименьшее число, в результате обработки которого автомат выдаст число 178.

Показать ответ и решение
for i in range(100, 1000):  
    s = str(i)  
    x01 = int(s[0]) + int(s[1])  
    x12 = int(s[1]) + int(s[2])  
    if str(max(x01, x12)) + str(min(x01, x12)) == ’178’:  
        print(i)  
        break

Ответ: 980

Ошибка.
Попробуйте повторить позже

Задача 10#30279

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

1. Складываются первая и вторая, а также вторая и третья цифры исходного числа.

2. Полученные два числа записываются друг за другом в порядке убывания (без разделителей).

Пример. Исходное число: 348. Алгоритм работает следующим образом:

1. Суммы: 3 + 4 = 7 для первой и второй цифр; 4 + 8 = 12 для второй и третьей цифр.

2. Полученные суммы записываются в порядке убывания.

Результат: 127.

Укажите наименьшее число, в результате обработки которого машина выдаст число 118.

Показать ответ и решение

У нас либо число 1 и 18, либо 11 и 8. Трехначное число, значит два из них рядышком должны быть девятки, а сумма 9 с чем-то всегда дает число больше или равно 9. Значит у нас числа 11 и 8.

На первом месте у нас наименьшее число может стоять это 1.

Чтобы получить 8 нам нужно к единичке добавить 7. На втором месте 7.

Что нужно прибавить к 7, чтобы получить 11? Правильно 4. Значит оно пойдет на последнее место.

Итог: это число 174.

Решение №2

for i in range(100, 1000):  
    s = str(i)  
    x01 = int(s[0]) + int(s[1])  
    x12 = int(s[1]) + int(s[2])  
    if str(max(x01, x12)) + str(min(x01, x12)) == ’118’:  
        print(i)  
        break

Ответ: 174

Ошибка.
Попробуйте повторить позже

Задача 11#30274

Автомат получает на вход какое-то число k (k < 100). По этому числу строится новое число M по таким правилам:

1. k умножается на число равное количеству десятков числа k;

2. К получившемуся числу прибавляется количество единиц числа k;

3. Вывод получившегося числа M.

Например: число 32 преобразовывается в 98.

Укажите число при вводе которого автомат выдает 280.

Показать ответ и решение

Тут нужно смотреть по числу умноженному на кол-во десятков. Например 49 = > 49⋅4+ 9 = 205  мало. 59 => 59 ⋅5 + 9 = 304  . Тоже чуть многовато.

Давайте попробуем число между, т.е. 55 => 55 ⋅5+ 5 = 280  . О... Идеально. Пишем ответ.

Решение №2

Тут вроде легче написать прогу даже...

for i in range(1, 100):  
    k = i  
    s = str(i)  
    k = k * int(s[0])  
    k += int(s[-1])  
    if k == 280:  
        print(i)

Ответ: 55

Ошибка.
Попробуйте повторить позже

Задача 12#30273

На вход алгоритма подаётся натуральное число N  .

Алгоритм строит по нему новое число R  следующим образом.

1) Вычисляется сумма S
  1  всех чётных цифр десятичной записи числа N  . Если чётных цифр нет, сумма S
 1  считается равной 0  .

2) Вычисляется сумма S2  всех цифр десятичной записи числа N  , стоящие на позициях с нечётными номерами. Позиции нумеруются слева направо, начиная с 1  .

3) Вычисляется результат R как модуль разности S1  и S2  .

Например, N = 1234  . Сумма чётных цифр S1 = 2+ 4 = 6  .

Сумма цифр в позициях с нечётными номерами S2 = 1 + 3 = 4  . Результат работы алгоритма R = 6− 4 = 2  .

Укажите наименьшее число, в результате обработки которого по данному алгоритму получится число 19  .

Показать ответ и решение

Решение 1

Если внимательно посмотреть, то мы всегда можем брать только нечетные позиции и складывать и получать число меньше. Если максимальное число мы можем взять в числе это 9, то 9 + 9 = 18  . А по условию у нас 19, значит нужна еще единица, только она будет находится впереди, чтобы число было меньше.

∗∗9∗ 9 = 10909  . Тут сумма по нечетным равна 19, а сумма по четным 0. Также это наименьшее число.

Решение 2

for n in range(1, 100000):
    n = str(n)
    s1, s2 = 0, 0
    for i in range(len(n)):
        if int(n[i]) % 2 == 0:
            s1 += int(n[i])
        if i % 2 == 0:
            s2 += int(n[i])
    if abs(s1-s2) == 19:
        print(n)
        break

Ответ: 10909

Ошибка.
Попробуйте повторить позже

Задача 13#29440

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

1.  Перемножаются первая и третья, а также вторая и четвертая цифры исходного числа.

2.  Полученные два числа записываются друг за другом в порядке неубывания (без разделителей).

Пример. Исходное число: 5819  . Произведения: 5⋅1 = 5;8 ⋅9 = 72  . Результат: 572  .

Укажите наименьшее число, в результате обработки которого автомат выдаст число 825  .

Показать ответ и решение
for n in range(1000, 10000):
    n = str(n)
    a = int(n[0])*int(n[2])
    b = int(n[1])*int(n[3])
    prom = str(min(a, b)) + str(max(a, b))
    if prom == ’825’:
        print(n)
        break

Ответ: 1585

Ошибка.
Попробуйте повторить позже

Задача 14#29352

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

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

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

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

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

Показать ответ и решение
count = 0
for i in range(100, 1000):
    n = [int(_) for _ in str(i)]
    n.sort()
    a = str(n[2]) + str(n[1])
    if n[0] != 0:
        b = str(n[0]) + str(n[1])
    elif n[1] != 0:
        b = str(n[1]) + str(n[0])
    else:
        continue
    if int(a) - int(b) == 11:
        count += 1
print(count)

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 15#28801

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

  1. Складываются первая и вторая, а также вторая и третья цифры исходного числа.

  2. Полученные два числа записываются друг за другом в порядке невозрастания (без разделителей).

Пример. Исходное число: 249.  Суммы: 2+ 4 = 6;4 + 9 = 13.  Результат: 136.

Укажите наименьшее число, в результате обработки которого автомат выдаст число 178  .

Показать ответ и решение
for i in range(100, 1000):
    n = [int(_) for _ in str(i)]
    x = [n[0] + n[1], n[1] + n[2]]
    x.sort()
    n_new = int(str(x[1]) + str(x[0]))
    if n_new == 178:
        print(i)
        break

Ответ: 980

Ошибка.
Попробуйте повторить позже

Задача 16#26967

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

  1. Складываются отдельно первая и вторая, вторая и третья, третья и четвёртая цифры заданного числа.
  2. Наименьшая из полученных трёх сумм удаляется.
  3. Оставшиеся две суммы записываются друг за другом в порядке неубывания без разделителей.

Пример. Исходное число: 1234  . Алгоритм работает следующим образом:

  1. Суммы: 1 + 2 = 3  для первой и второй цифр; 2 + 3 = 5  для второй и третьей цифр; 3+ 4 = 7  для третьей и четвертой цифр.
  2. Наименьшая сумма = 3  удаляется.
  3. Оставшиеся две суммы записываются друг за другом в порядке неубывания без разделителей - 57  .

Результат: 57  .

Укажите наименьшее число, при обработке которого автомат выдаёт результат 1215  .

Показать ответ и решение
for i in range(1000, 10000):
    n = [int(_) for _ in str(i)]
    x = [n[0] + n[1], n[1] + n[2], n[2] + n[3]]
    x.sort()
    x = int(str(x[1]) + str(x[2]))
    if x == 1215:
        print(i)
        break

Ответ: 1396

Ошибка.
Попробуйте повторить позже

Задача 17#26940

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

1. Складываются первая и вторая, а также вторая и третья цифры исходного числа.

2. Полученные два числа записываются друг за другом в порядке убывания (без разделителей).

Пример. Исходное число: 123  . Алгоритм работает следующим образом:

1. Суммы: 1 + 2 = 3  для первой и второй цифр; 2 + 3 = 5  для второй и третьей цифр.

2. Полученные суммы записываются в порядке убывания.

Результат: 53  .

Укажите наименьшее число, в результате обработки которого машина выдаст число 1111  .

Показать ответ и решение
for i in range(100, 1000):
    s = str(i)
    sum1 = int(s[0]) + int(s[1])
    sum2 = int(s[1]) + int(s[2])
    if str(min(sum1, sum2)) + str(max(sum1, sum2)) == ’1111’:
        print(i)
        break

Ответ: 292

Ошибка.
Попробуйте повторить позже

Задача 18#26672

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

1. Складываются первая и вторая, а также вторая и третья цифры.

2. Полученные два числа записываются друг за другом в порядке неубывания без разделителей.

Укажите наибольшее число, при обработке которого автомат выдаёт результат 814  .

Показать ответ и решение
ma = 0
for t in range(100,1000):
    s = str(t)
    if (int(s[0])+int(s[1])==8) and (int(s[1])+int(s[2])==14) or (int(s[0])+int(s[1])==14) and (int(s[1])+int(s[2])==8):
        ma = t
print(ma)

Ответ: 953

Ошибка.
Попробуйте повторить позже

Задача 19#26084

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

1. Складываются первая и вторая, третья и четвертая, а также первая и пятая цифры исходного числа.

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

3. Оставшиеся два числа записываются друг за другом в порядке неубывания (без разделителей).

Пример. Исходное число: 12345. Суммы: 1 + 2 = 3;3+ 4 = 7;1 + 5 = 6  . Максимальное: 7, тогда результат: 36. Укажите наибольшее число, в результате обработки которого автомат выдаст число 517.

Показать ответ и решение
for i in range(99999, 9999, -1):
    n = [int(_) for _ in str(i)]
    x = [n[0] + n[1], n[2] + n[3], n[0] + n[4]]
    result = int(str(min(x)) + str(sum(x) - max(x) - min(x)))
    if result == 517:
        print(i)
        break

Ответ: 99508

Ошибка.
Попробуйте повторить позже

Задача 20#26057

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

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

Пример. Исходное число: 1234  . Произведения: 1× 2 = 2; 2× 3 = 6; 3 ×4 = 12  . Максимальное: 12  , тогда результат: 62  . Укажите наибольшее число, в результате обработки которого автомат выдаст число 1815  .

Показать ответ и решение
for i in range(9999, 999, -1):
    n = [int(_) for _ in str(i)]
    m = n[0] * n[1], n[1] * n[2], n[2] * n[3]
    result = str(sum(m) - max(m) - min(m)) + str(min(m))
    if result == ’1815’:
        print(i)
        break

Ответ: 9635
Рулетка
Вы можете получить скидку в рулетке!