Ошибка.
Попробуйте повторить позже
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 4; 2; 1; 3; 4; 5; 6; 7; 8; 3 соответственно, т.е. A[0] = 4; A[1] = 2 и т.д. Определите значение переменной после выполнения следующего фрагмента программы, записанного ниже на разных языках программирования.
Решение аналитически
Цикл проверяет каждый элемент массива на совпадение с A[0], затем этот элемент, который совпал, меняется местами со следующим. Значит, условие совпадения будет выполняться до конца цикла. Условие сопадения первый раз выполнится и будет выполняться до конца при , значит, значение .
Решение программой
c = 0 a = [4, 2, 1, 3, 4, 5, 6, 7, 8, 3] for i in range(1, 10): if a[i] == a[0]: c += 1 # Чтобы не вышло за границы списка if i == len(a) - 1: break t = a[i + 1] a[i + 1] = a[i] a[i] = t print(c)
Ошибка.
Попробуйте повторить позже
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 4; 5; 1; 6; 3; -1; 0; -2; 7; 2 соответственно, т.е. A[0] = 4; A[1] = 5 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы, записанного ниже на разных языках программирования.
Решение аналитически
Цикл сравнивает каждый элемент массива, начиная с A[1]. Если A[i] меньше, чем A[0], то A[0] заменяется на A[i], A[i] заменяется A[0], а значение переменной увеличивается на 1. Пошагово распишем работу программы: , значит, не увеличиваем и не меняем элементы местами: ;
, значит, увеличиваем и меняем элементы местами: ;
, значит, не увеличиваем и не меняем элементы местами: ;
Следующий элемент, меньше A[0] — A[6]. Значит, когда цикл проверит элемент A[6], значение увеличится и элементы поменяются местами: ; .
Дальше проверяем A[8], т.к. : ; .
Заметим, что дальше нет элементов меньших, чем A[0], значит, .
Решение программой
c = 0 a = [4, 5, 1, 6, 3, -1, 0, -2, 7, 2] for i in range(10): if a[i] < a[0]: c += 1 t = a[i] a[i] = a[0] a[0] = t print(c)
Ошибка.
Попробуйте повторить позже
Ниже на двух языках программирования записан алгоритм. Получив на вход натуральное десятичное число , этот алгоритм печатает два числа: и . Укажите наибольшее число , при вводе которого алгоритм печатает сначала 24, а потом 4.
Посмотрим, за что отвечает каждое число. В программе мы делим число на 7 до тех пор, пока оно не становится неположительным. С числом мы проводим две операции: делим на 7 и берем остаток от деления на 7, значит, делением на 7 мы переводим в семеричную систему счисления.
Мы увеличиваем на единицу при каждом делении, значит, — это количество разрядов, искомое число четырехзначное.
Если последняя цифра числа в семеричной системе четная, мы умножаем на нее число . Значит, — это произведение всех четных цифр, составляющих наше число.
Нам нужно указать наибольшее . Значит, нам нужно, чтобы старший разряд был максимально большим — иначе число будет меньше, чем могло бы быть. Начнем подбирать его. Вспомним, что мы в семеричной системе счисления. Значит, максимальная цифра — 6. Может ли на первом месте числа стоять 6? Да, может, она четная (помним, что умножаем на только четные цифры). Осталось три разряда.
Мы все еще хотим, чтобы наше число было максимальным. Может ли на следующем месте стоять 6 для этого? Нет, т.к. тогда мы не получим нужного . Может ли быть 5? Да, ведь нечетные цифры не влияют на . Отлично, значит, у нас есть число вида 65**.
Продолжим. Можем ли мы поставить 6 на следующее место? По той же причине — нет. А 5? Можем. Тогда на следующей позиции должна стоять 4 — и будет 24.
Получили 6554. А теперь вспомним, что это число в семеричной системе. Переведем в десятичную: .
Ошибка.
Попробуйте повторить позже
Определите, что будет напечатано в результате работы следующего фрагмента программы:
Решение аналитически
Вручную просчитаем все действия программы, для удобства отобразим это с помощью
таблицы:
Так как на следующем шаге , условие цикла не выполняется, значит,
последнее значение , именно его и выведет на экран программа.
Решение программой
s = 0 k = 0 while k < 15: k = k + 3 s = s + k print(s)
Ошибка.
Попробуйте повторить позже
Определите, какое число будет напечатано в результате выполнения следующего алгоритма:
Решение аналитически
Рассмотрим цикл. В переменной хранится какое-то значение функции, в цикле мы рассматриваем все значения функции для [ ] и находим минимальное (из условия т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и при котором это значение достигается, в переменные и соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие внутри цикла не будет выполнено, т.к. знак неравенства строгий.
Таким образом, мы ищем — абсциссу точки минимума.
Рассмотрим и построим график функции: при неотрицательных получаем функция симметрична относительно оси (четная, т.к. тогда отражением получаем такой график:
Из него легко увидеть, что минимум впервые достигается в — это и есть ответ.
Решение программой
def f(x): return 4 * x * x - 7 * abs(x) + 375 a = -12 b = 12 M = a R = f(a) for i in range(a, b+1): if f(i) < R: M = i R = f(i) print(M)
Ошибка.
Попробуйте повторить позже
Определите, какое число будет напечатано в результате выполнения следующего алгоритма:
Решение аналитически
Рассмотрим функцию —- графиком является парабола ветвями вверх, функция принимает только значения не меньше 19, т.к. выражение 17 всегда неотрицательно.
Рассмотрим цикл. В переменной хранится какое-то значение функции, в цикле мы рассматриваем все значения функции для и находим минимальное (из условия т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и при котором это значение достигается, в переменные и соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.
Ищем минимальное значение. Т.к. функция принимает только значения не меньше 19, минимальное, которое может быть, —- Покажем, что это значения достигается при действительно, при функция принимает значение 19. Значит, ответ: 19.
Решение программой
def f(x): return 17 * (14 - x) * (14 - x) + 19 a = -20 b = 20 M = a R = f(a) for i in range(a, b+1): if f(i) < R: M = i R = f(i) print(R)
Ошибка.
Попробуйте повторить позже
Определите, какое число будет напечатано в результате выполнения следующего алгоритма:
Решение аналитически
Рассмотрим функцию
Знаем, что при раскрытии скобок мы получим положительный коэффициент перед действительно, при перемножении скобок возникнет только при умножении на который далее домножится на 17. Тогда, так как коэффициент перед положителен, график — парабола ветвями вверх с нулями в и Известно, что абсцисса вершины параболы — среднее арифметическое абсцисс корней, значит, — 5.5. Значение минимума (вершины):
Рассмотрим цикл. В переменной хранится какое-то значение функции, в цикле мы рассматриваем все значения функции для и находим минимальное (из условия т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и при котором это значение достигается, в переменные и соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.
Таким образом, мы ищем минимальное значение функции и x, при котором это значение достигается в первый раз. Знаем, что парабола ветвями вверх достигает минимум в вершине, на всякий случай приведем график, который легко построить из рассуждений выше:
Заметим, что в программе рассматриваются только целые числа (обратите внимание на тип переменных), значит, не подойдет. Тогда проверим два ближайших значения — и Так как мы ищем, когда минимальное значение достигнется первый раз, то в ответ записываем
Решение программой
def f(x): return 17 * (x - 4) * (x - 7) a = -20 b = 20 M = a R = f(a) for i in range(a, b+1): if f(i) < R: M = i R = f(i) print(M)
Ошибка.
Попробуйте повторить позже
Определите, какое число будет напечатано в результате выполнения следующего алгоритма:
Первый способ. Рассмотрим функцию Построим график данной функции:
1) Построим раскрыв модули, определив знаки на соответствующих промежутках;
2) Сдвинем полученный график на 19 единиц вниз;
3) Теперь наложим знак модуля на полученное: все, что ниже оси отразим относительно нее;
4) Последнее: сдвинем полученное на 12 единиц вверх.
График готов — теперь рассмотрим цикл. В переменной хранится какое-то значение функции, в цикле мы рассматриваем все значения функции для и находим минимальное (из условия т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — ищем минимум), записывая его и при котором это значение достигается, в переменные и соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.
Таким образом, мы ищем минимальное значение функции и при котором это значение достигается в первый раз. Это легко сделать с помощью построенного графика:
По графику видим, что минимум в первый раз достигается при значение — Из кода легко понять, что рассматриваются только целые значения Таким образом, получим — вывод: 1 + 12 = 13.
Второй способ. Как и в первом способе, понимаем, что в программе для ищутся и (их значения хранятся в и при которых функция впервые достигает минимальное значение, причем рассматриваем
Рассмотрим и заметим, что т.к. значит, минимум (т.е. значение), равный 12, достигается при т.е. при и при Впервые минимальное значение достигнуто при значит,
Третий способ. Перепишем код
def f(x): return abs(abs(x - 14) + abs(x - 7) - 19) + 12 a = -40 b = 40 M = a R = f(a) for i in range(a, b+1): if f(i) < R: M = i R = f(i) print(M + R)
Ошибка.
Попробуйте повторить позже
Определите наименьшее значение переменной при котором программа, приведенная ниже, выведет ответ 17.
Решение аналитически
То, что программа выведет ответ 17, означает, что последнее значение переменной для которой условие цикла выполняется, равно 16 (когда для переменной выполняется условие цикла, ее значение увеличивается на один, т.е. для выведенного после выхода из цикла значения условие цикла выполнено не будет — последнее допустимое значение после выполнения условия цикла было увеличено на один).
Это означает, что 16 раз было выполнено Подставим в данное неравенство сами функции и Преобразуем: Знаем, что значит, при всех значениях кроме 0, неравенство равносильно то есть
Для = 16 полученное неравенство выполнено. Значит,
Для = 17 полученное неравенство уже выполнено быть не должно: иначе программа бы вывела ответ 18. Значит, 17.
Ищем наименьшее значение Значит, наш ответ — 17.
Решение программой
def f(x): return x ** 3 def g(x): return x ** 2 for j in range(100): i = 1 while f(i) < g(i) * j: i += 1 if i == 17: print(j) break