задачи по информатике. СР Инфа. Анализ программы, содержащей подпрограммы, циклы и ветвления
Скачать 23.37 Kb.
|
©Арбитович Александр, МБОУ лицей №2, апрель, 2020 Тема: Анализ программы, содержащей подпрограммы, циклы и ветвления. Задачи для самостоятельного решения На оценку 5 недостаточно дать ответ, надо сделать анализ, почему именно это число является ответом. Записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 48, а потом 6. x = int(input()) a = 1 b = 0 while x > 0: c = x % 10 a = a*c if c > b: b = c x //= 10 print(a) print(b) Решение: Следуя из алгоритма, цикл будет выполнятся столько раз, сколько цифр в числе. C присваивается остаток от деления x на 10 Переменная a увеличивается в c раз Если остаток от деления x на 10 меньше b, то b присваивается значение c Произведение чисел – 48 Самое большая цифра в числе – 6 Наименьшее число – 246 Ниже записана программа. Получив на вход число x , эта программа печатает два числа, a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 72. x = int(input()) a = 0 b = 1 while x > 0: a += 1 b *= x % 10 x = x // 10 print(a) print(b) Решение: Следуя из алгоритма, цикл будет выполнятся столько раз, сколько цифр в числе, при этом число а увеличивается на 1 Т.к. в конце а = 2, число двузначное b присваивается произведение цифр числа x b = 72, разложим его, получим 9*8 Наименьшее число - 89 Ниже записана программа. Получив на вход число x , эта программа печатает два числа, L и M. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 28. x = int(input()) L = 0 M = 0 while x > 0: L = L + 1 if M < x: M = M + (x % 10) * 2 x = x // 10 print(L) print(M) Решение: Следуя из алгоритма, цикл будет выполнятся столько раз, сколько цифр в числе, при этом числа L увеличивается на 1 Т.к. в конце L = 3, число трехзначное M присваивается сумма удвоенных четных цифр числа x Наименьшее число - 177 Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 6, а потом 9. x = int(input()) a = 0 b = 0 while x > 0: a += 2 b += (x % 10) x //= 10 print(a) print(b) Решение: Следуя из алгоритма для того, чтобы a=6, x должно быть трехзначным b присваивается значение суммы цифр числа. b = 9 Наименьшее трехзначное начинается с единицы. Разложим 9 на 1+8. Наименьшее число - 108 Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т. е. большее 100) число x, при вводе которого алгоритм печатает 60. x = int(input()) L = x-30 M = x+30 while L != M: if L > M: L = L - M else: M = M - L print(M) Решение: НОД (L, M) = 60 Выпишем L, которые делятся на 60 Затем, будем находить x и M. x=L+30, M=x+30
Первый столбец не подходит, потому что x=90<100 Находим НОД (L, M), при L=120, M=180 НОД (120, 180) = 60 Ответ: x=150 6. Ниже записана программа. Получив на вход число , эта программа печатает два числа, и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 8, а потом 19. x = int(input()) a = 0; b = 0 while x > 0: a = a + 2 b = b + (x % 10) x = x // 10 Решение отсутствует, потому что код незакончен Видео-разбор заданий по теме: Нахождение НОД (при нажатой клавише: Ctrl) https://youtu.be/RzXNM8nAOks |