Сегодня посмотрим 6 задание из ЕГЭ по информатике 2022.
В этом уроке мы будем использовать метод перебора для решения различных задач из 6 задания ЕГЭ по информатике 2022.
Решать задачи будем на языке Python.
Задача (Классическая)
Определите, при каком наименьшем введённом значении переменной s программа выведет число 23. Для Вашего удобства программа представлена на трёх языках программирования.
var s, n: integer; begin readln(s); n := 50; while s > 0 do begin s := s div 2; n := n — 3 end; writeln(n) end.
s = int(input()) n = 50 while s > 0: s = s // 2 n = n — 3 print(n)
#include using namespace std; int main() < int s, n = 50; cin >> s; while (s > 0) < s = s / 2; n = n — 3; > cout endl; return 0; >
Источник задачи: https://kpolyakov.spb.ru/
Решим задачу с помощью перебора.
Будем подставлять каждое число в диапазоне от 1 до 1000 в наш алгоритм с помощью цикла for. Узнаем, при каких значениях на выходе программа будет печатать число 23.
Анализ простой программы. Значение переменной после выполнения цикла while-do (информатика, ЕГЭ)
for i in range(1, 1001): s = i n = 50 while s > 0: s = s // 2 n = n — 3 if n==23: print(i)
Вместо команды input() присваиваем в переменную n очередное число. В конце программы вместо команды print() пишем условие. Печатаем только те значения переменной i, которые приводят к тому, что в переменной n будет нужный результат (число 23).
Программа напечатает следующие числа:
Самое маленькое число, которое подходит, это 256.
Ещё одна задача-ловушка из 6 задания ЕГЭ по информатике 2022.
Задача (С подвохом)
Определите, сколько существует целых положительных значений, подаваемых на вход программе, при которых программа выведет 27.
var s, n: integer; begin readln(s); n := 3; while s*n 243 do begin s := s div 3; n := n * 9 end; writeln(n) end.
s = int(input()) n = 3 while s*n 243: s = s // 3 n = n * 9 print(n)
#include using namespace std; int main() < int s, n = 3; cin >> s; while (s*n 243) < s = s / 3; n = n * 9; > cout endl; return 0; >
В этой программе подвох заключается в том, что, если мы будем перебирать числа от 1 до 1000, то программа зависнет и ничего не напечатает.
В таких случаях можно попробовать перебрать числа с 1000 до 1.
for i in range(1000, 0, -1): s = i n = 3 while s*n if n==27: print(i)
Третий параметр «-1» для цикла for означает, что мы перебираем числа с 1000 до 1 в обратном порядке.
Программа напечатает числа с 80 до 27.
Если проверить на небольших числа, то мы должны прибавить 1 к разнице двух чисел.
Закрепим метод перебора в 6 задании из ЕГЭ по информатике 2022.
Задача (Закрепление)
(А.Г. Минак) Определите, при каком введённом значении переменной s программа выведет число 16.
var s, n: integer; begin readln(s); n := 0; while s*s 101 do begin s := s + 1; n := n + 2 end; writeln(n) end.
s = int(input()) n = 0 while s*s 101: s = s + 1 n = n + 2 print(n)
#include using namespace std; int main() < int s, n = 0; cin >> s; while (s*s 101) < s = s + 1; n = n + 2; > cout endl; return 0; >
Источник задачи: https://kpolyakov.spb.ru/
Здесь справляется стандартный перебор от 1 до 1000.
for i in range(1, 1001): s = i n = 0 while s*s if n==16: print(i)

ЕГЭ по информатике 2021 — Задание 14 (Чемпионская подготовка)
2. Определить значение переменной s после выполнения следующих операторов при n=6, 5, 9
Найдите правильный ответ на вопрос ✅ «2. Определить значение переменной s после выполнения следующих операторов при n=6, 5, 9 read (n) ; s:=4; for i:=0 to n do s:=s+i; write (s) . » по предмету Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Новые вопросы по информатике
Написать программу, которая выводит на экран результаты следующих действий: 27-5= 11+21= 32/2= 2+2*2= (2+2) * 2= Написать программу, которая выводит на экран результаты следующих действий: 21-4= 21+11= 43/3= 3+3*3= (3+3) * 3=
Вариант 2 1. Даны три числа. Найдите сумму второго и третьего числа. Найдите квадрат первого числа. 2. Даны длины сторон прямоугольника. Найдите площадь прямоугольника.
3. Даны длины катетов прямоугольного треугольника. Найдите периметр треугольника.
Почему при А=1, В=1, С=1 ответ АVВ равно 1?
2. Какое значение будет иметь переменная b после выполнения следующих операторов присваивания: a:=3; b:=a+9; b:=a+b; b:=a-b+b/a. 3.
Найдите наиболее точное общее имя каждой группе объектов: з) клавиатура, сканер, мышь
Главная » Информатика » 2. Определить значение переменной s после выполнения следующих операторов при n=6, 5, 9 read (n) ; s:=4; for i:=0 to n do s:=s+i; write (s) ;
Источник: iotvet.com
ЕГЭ по информатике — Задание 19 (Массивы)

Новое 19 задание 2023-ого года можете посмотреть в этой статье.
Сегодня будем тренироваться решать 19 задание из ЕГЭ по информатике.
В девятнадцатом задании ЕГЭ по информатике обычно даются задачи, в которых есть программный код на пяти языках программирования, и нужно показать умение работать с массивами.
Но зачем вообще нужны массивы в программировании ? Давайте об этом немного поговорим!
Зачем нужны массивы ?
Все примеры буду рассматривать на языке программирования Паскаль, который популярен на уроках информатики.
Пусть у нас есть пять переменных, и их первоначальные значения нужно увеличить в два раза. Тогда без массива код будет выглядеть следующим образом:
var x, y, z, m, n: integer; begin // Первоначальные значения x := 2; y := 3; z := 1; m := 6; n := 8; //Удваиваем значения x := 2 * x; y := 2 * y; z := 2 * z; m := 2 * m; n := 2 * n;
Видим, что приходится каждую переменную умножать отдельно.
Теперь тоже самое сделаем с помощью массива.
const n = 5; var i :integer; A:array[1..n] of integer; begin // Первоначальные значения A[1] := 2; A[2] := 3; A[3] := 1; A[4] := 6; A[5] := 8; //Удваиваем значения for i:=1 to n do A[i] := 2 * A[i];
Обратите внимание, что удвоение во втором случае идёт с помощью двух строчек, когда в первом случае, удвоение получается с помощью пяти строчек. Если бы переменных было 1000, то выигрыш в объёме кода, был бы ещё большим.
Схематично наш массив можно представить так:
Это те же 5 переменных, но они объединены общем именем A. К каждому элементу массива можно обратится по индексу A[1], A[2] и т.д.
Здесь мы задали нумерацию элементов массива от 1 до 5. В паскале можно задать нумерацию элементов массива и от нуля. Например A:array[0..24] of integer;
Удобство использования массива заключается в том, что его элементы можно перебирать и обрабатывать с помощью ЦИКЛОВ! Значит, обычно массив и цикл работают в связке.
Не терпится уже разобрать первый пример из предположительных задач ЕГЭ по информатике.
Примеры решения задач 19 задания из ЕГЭ по информатике
В программе используются целочисленный массив A с индексами от 0 до 9. Значения элементов массива равны 4; 5; 4; 7; 6; 3; 9; 11; 7; 8 соответственно, т.е. A[0] = 4; A[1] = 5 и т.д.
Определите значение переменной k после выполнения следующего фрагмента программы, записанной ниже на разных языках программирования.
k=0 FOR i=0 TO 8 IF A(i) > A(i+1) THEN k = k + 1 t = A(i) A(i) = A(i+1) A(i+1) = t END IF NEXT i
k = 0 for i in range(9): if A[i] > A[i+1]: k = k + 1 t = A[i] A[i] = A[i+1] A[i+1] = t
k := 0; for i := 0 to 8 do if A[i] > A[i+1] then begin k := k + 1; t := A[i]; A[i] := A[i + 1]; A[i + 1] := t end;
k := 0 нц для i от 0 до 8 если A[i] > A[i + 1] то k := k + 1 t := A[i] A[i] := A[i + 1] A[i+1] := t все кц
k = 0; for (i = 0; i 8; i++) if (A[i] > A[i + 1]) < k = k + 1 t = A[i]; A[i] = A[i + 1]; A[i + 1] = t; >
Рассмотрим программу на языке Паскаль.
В начале переменная k = 0.
Затем начинается ЦИКЛ. Цикл будет выполнятся, пока переменная i «бежит» от 0 до 8.
При первом проходе ЦИКЛА i = 0, при втором i = 1 и т.д.
Внутри цикла проверяется условие (A[i] > A[i+1]). Если условие ВЕРНО, то программа прибавляет к переменной k единицу, и плюс, меняет значения ячеек массива A[i] и A[i+1] с помощью дополнительной переменной t.
Про замену значений двух переменных у меня на сайте написана целая статья!
Чтобы понять, чему равна переменная k после окончания программы, нужно понять, сколько раз будет верно условие внутри цикла.
Сам массив нам дан! (4; 5; 4; 7; 6; 3; 9; 11; 7; 8).
На рисунке показана каждая итерация ЦИКЛА при всех значениях переменной i. Зелёной галочкой отмечены те итерации, где сработает условие, и, значит, переменная k будет увеличена на 1.
Важно: После первого срабатывания условия, программа меняет значения элементов A[1] и A[2]. И наш массив принимает следующий вид: 4; 4; 5; 7; 6; 3; 9; 11; 7; 8. И при следующем проходе A[2] снова принимает значение «5», а не «4»! И так во всех случаях, когда условие срабатывает!
Таким образом, значение k после выполнения программы равна 5.
Продолжаем подготовку к 19 заданию из ЕГЭ по информатике.
Задача (ЕГЭ по информатике, 2019, Москва)
Представленный ниже фрагмент программы обрабатывает элементы одномерного массива A с индексами от 0 до 9. Перед началом выполнения данного фрагмента эти элементы массива имели значения 2, 3, 5, 6, 10, 4, 8, 6, 12, 9 (т.е. A[0] = 2, A[1] = 3, . , A[9] = 9).
Определите значение переменной s после выполнения фрагмента этой программы (записанной ниже на разных языках программирования)
n = 6 s = 0 FOR i = 0 TO 9 IF A(i) > A(n) THEN s = s + (A(i) MOD A(n)) t = A(i) A(i) = A(n) A(n) = t END IF NEXT i
n = 6 s = 0 for i in range(0, 10): if A[i] > A[n]: s += A[i] % A[n] t = A[i] A[i] = A[n] A[n] = t
n := 6 s := 0 for i:=0 to 9 do begin if A[i] > A[n] then begin s := s + (A[i] mod A[n]); t := A[i]; A[i] := A[n]; A[n] := t; end end;
n = 6; s = 0; for(i = 1; i 9; ++i) < if (A[i] > A[n]) < s += A[i] % A[n]; t = A[i]; A[i] = A[n]; A[n] = t; >>
В начале задаются начальные значения для переменных s и n. Если посмотреть дальше глазами, то видим, что переменная n участвует для указания индекса элемента массива, переменная s — это результат суммы некоторых вычислений.
В ЦИКЛЕ i проходит каждое значение от 0 до 9. В теле Цикла только условие! А в условии проверяется: будет ли элемент массива A с индексом i больше, чем A[n].
В первый раз n=6 (A[6] = 8). Напоминаю, что в этой задаче номера индексов массива начинаются с нуля! Но если условие «сработает», то A[n] поменяется.
Если условие выполнится, то значение A[n] станет равно A[i]. Опять присутствует блок, где элементы массива A[n] и A[i] меняются значениями (Найдите этот кусок кода сами!). И, соответственно, сравнивать в условии будем тоже с новым значением.
Так же, если условие выполнится, то мы к тому, что было к переменной s прибавим значение A[i] mod A[n] (mod — это операция, которая показывает остаток от деления).
Причем, сначала происходит суммирование для переменной s, а потом уже замена значения для A[n].
| i | A[i] | A[n] | A[i] > A[n] | A[i] mod A[n] | s |
| 2 | 8 | 2 > 8 | — | ||
| 1 | 3 | 8 | 3 > 8 | — | |
| 2 | 5 | 8 | 5 > 8 | — | |
| 3 | 6 | 8 | 6 > 8 | — | |
| 4 | 10 | 8 | 10 > 8 | 2 | 2 |
| 5 | 4 | 10 | 4 > 10 | — | 2 |
| 6 | 10 | 10 | 10 > 10 | — | 2 |
| 7 | 6 | 10 | 6 > 10 | — | 2 |
| 8 | 12 | 10 | 12 > 10 | 2 | 4 |
| 9 | 9 | 12 | 9 > 12 | — | 4 |
Таким образом, по окончании данного фрагмента программы, получится в переменной s значение 4.
Ещё один пример 19 задания из реального экзамена, который был в 2020 году в Москве!
Задача (ЕГЭ по информатике, 2020, Москва)
Представленный ниже фрагмент программы обрабатывает элементы одномерного целочисленного массива A c индексами от 0 до 11. Перед началом выполнения данного фрагмента эти элементы массива имели значения согласно таблице:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
| 5 | 43 | 20 | 7 | 13 | 7 | 20 | 13 | 2 | 33 | 15 | 5 |
Определите значение переменной s после выполнения фрагмента этой программы (записанного ниже на разных языках программирования).
s = 0 FOR i = 1 TO 11 IF A(i-1) DIV A(i) < 2 THEN s = s + A(i) ELSE A(i) = A(i) * i END IF NEXT i
s = 0 for i in range(1, 12): if A[i-1] // A[i] < 2: s += A[i] else: a[i] = a[i] * i
s := 0; for i:=1 to 11 do begin if A[i-1] div A[i] < 2 then begin s := s + A[i] else A[i] := A[i] * i; end end;
s = 0; for (i = 1; i < 12; ++i ) < if (A[i-1] // A[i] < 2) < s += A[i] >else < A[i] = A[i] * i >>
Цикл «пробегает» весь массив. Здесь переменная i начинает идти с 1, потому что мы внутри тела цикла обращаемся к элементу с индексом i-1. Если бы i пошла с нуля, то получилось бы, что программа обратилась к элементу с индексом -1, и была бы ошибка.
Внутри ЦИКЛА находится одно условие. В условии сразу проверяется меньше ли двух результат от целочисленного деления A[i-1] на A[i] (div — это целочисленное деление, т.е. обычное деление, но дробная часть отбрасывается). Если условие выполнится, то программа к переменной s прибавит элемент A[i]. Если условие не будет выполнено, то элемент A[i] будет умножен на i, и это повлияет на следующую итерацию, ведь массив то изменится.
| i | A[i-1] | A[i] | A[i-1] div A[i] 0 | 43 | 43 (в конце итерации) |
| 2 | 43 | 20 | 2 | 43 | 40 (в конце итерации) |
| 3 | 40 | 7 | 5 | 43 | 21 (в конце итерации) |
| 4 | 21 | 13 | 1 | 56 | 13 (в конце итерации) |
| 5 | 13 | 7 | 1 | 63 | 7 (в конце итерации) |
| 6 | 7 | 29 | 92 | 29 (в конце итерации) | |
| 7 | 29 | 13 | 2 | 92 | 91 (в конце итерации) |
| 8 | 91 | 2 | 45 | 92 | 16 (в конце итерации) |
| 9 | 16 | 33 | 125 | 33 (в конце итерации) | |
| 10 | 33 | 15 | 2 | 125 | 150 (в конце итерации) |
| 11 | 150 | 5 | 30 | 125 | 55 (в конце итерации) |
Ответ: 125
На этом всё! Счастливого ЕГЭ по информатике!
Источник: code-enjoy.ru