ЕГЭ по информатике 2022 — Задание 6 (Метод перебора)
Сегодня посмотрим 6 задание из ЕГЭ по информатике 2022.
В этом уроке мы будем использовать метод перебора для решения различных задач из 6 задания ЕГЭ по информатике 2022.
Решать задачи будем на языке Python.
Определите, при каком наименьшем введённом значении переменной s программа выведет число 23. Для Вашего удобства программа представлена на трёх языках программирования.
Паскаль | Python | C++ |
---|
Источник задачи: https://kpolyakov.spb.ru/
Решим задачу с помощью перебора.
Будем подставлять каждое число в диапазоне от 1 до 1000 в наш алгоритм с помощью цикла for. Узнаем, при каких значениях на выходе программа будет печатать число 23.
Вместо команды input() присваиваем в переменную n очередное число. В конце программы вместо команды print() пишем условие. Печатаем только те значения переменной i, которые приводят к тому, что в переменной n будет нужный результат (число 23).
Программа напечатает следующие числа:
Самое маленькое число, которое подходит, это 256.
Ещё одна задача-ловушка из 6 задания ЕГЭ по информатике 2022.
Определите, сколько существует целых положительных значений, подаваемых на вход программе, при которых программа выведет 27.
Паскаль | Python | C++ |
---|
В этой программе подвох заключается в том, что, если мы будем перебирать числа от 1 до 1000, то программа зависнет и ничего не напечатает.
В таких случаях можно попробовать перебрать числа с 1000 до 1.
Третий параметр «-1» для цикла for означает, что мы перебираем числа с 1000 до 1 в обратном порядке.
Программа напечатает числа с 80 до 27.
Если проверить на небольших числа, то мы должны прибавить 1 к разнице двух чисел.
Закрепим метод перебора в 6 задании из ЕГЭ по информатике 2022.
(А.Г. Минак) Определите, при каком введённом значении переменной s программа выведет число 16.
КЕГЭ 2022, задание №6
материал для подготовки к егэ (гиа) по информатике и икт (11 класс)
За лето ребенок растерял знания и нахватал плохих оценок? Не беда! Опытные педагоги помогут вспомнить забытое и лучше понять школьную программу. Переходите на сайт и записывайтесь на бесплатный вводный урок с репетитором.
Вводный урок бесплатно, онлайн, 30 минут
Предварительный просмотр:
1. Определите, при каком наименьшем (наибольшее) введённом значении переменной s программа выведет число 128.
s = int(input())
n = 1
while s > 43:
s = s — 8
n = n * 2
print(n)
s0 = 43
while True :
n = 1
s = s0
while s > 43 :
s = s — 8
n = n * 2
if n == 128 : print (s0)
s0 + = 1
Ответ: 92 наименьшее, 99 – наибольшее
2. При каком наибольшем введенном числе d после выполнения программы будет напечатано 55?
d = int(input())
n = 0
s = 0
while s
d0 = 366
while True :
d = d0
n = 0
s = 0
while s 365 :
s = s + d
n = n + 5
if n == 55 : print (d)
d0 — = 1
3. Определите, при каком наименьшем введённом значении переменной s программа выведет число 67.
s = int(input())
n = 105
while n > s:
s = s + 3
n = n — 2
print(n)
s0 = 105
while True :
s = s0
n = 105
while n > s:
s = s + 3
n = n — 2
if n == 67 : print (s0)
s0 — = 1
4. Определите, при каком наибольшем введённом значении переменной s программа выведет число 31.
s = int(input())
n = 10
while s > 0:
s = s — 15
n = n + 3
print(n)
s0 = 0
while True :
s = s0
n = 10
while s > 0 :
s = s — 15
n = n + 3
if n == 31 : print (s0)
s0+= 1
6 задание ЕГЭ информатика про программирование основных конструкций
6-е задание: «Программирование: основные конструкции»
Уровень сложности — базовый,
Требуется использование специализированного программного обеспечения — нет,
Максимальный балл — 1,
Примерное время выполнения — 4 минуты.
Проверяемые элементы содержания: Знание основных конструкций языка программирования, понятия переменной, оператора присваивания
«Задания этой линии можно решать двумя способами:
1) составить на черновике таблицу переменных, произвести пооператорное выполнение программы с записью изменяющихся значений в таблицу(трассировка);
2) определить количество итераций цикла и на основе этого вычислить результат.
Второй способ более быстрый, но он требует умения анализировать текст простой программы без её выполнения»
Типичные ошибки и рекомендации по их предотвращению:
«Экзаменуемый не учитывает последнюю итерацию цикла или, напротив, добавляет лишнюю. Это может быть связано с непониманием того, как обрабатывается условие цикла, или с ошибочной обработкой строгого неравенства как нестрогого или наоборот»
«Рекомендуемый способ выполнения этого задания – трассировка»
Типичные ошибки и рекомендации по их предотвращению:
«Часто бывает, что при выполнении программы внутри итерации цикла изменяется значение не только текущего i-го элемента, но и следующего i+1-го, поэтому в следующей итерации текущий элемент будет иметь не то значение, что перед выполнением программы. Это нужно внимательно отслеживать, чтобы избежать ошибок. Кроме того, в определённых типах заданий может более сложно изменяться индекс текущего элемента, тут тоже требуется аккуратность и внимательность»
Алгоритмические структуры с циклами
В 6 задании ЕГЭ используются алгоритмические структуры с циклами. Рассмотрим их на примере языка Паскаль.
- Для знакомства и повторения цикла While, пройдите по ссылке.
- Для знакомства и повторения цикла For, пройдите по ссылке.
Сумма арифметической прогрессии
- ai – i-ый элемент последовательности,
- d – шаг (разность) последовательности.
Сумма геометрической прогрессии
- bi – i-ый элемент последовательности,
- q – знаменатель последовательности.
- Следует помнить, что сумма геометрической прогрессии не верна при q = 1
Массивы и матрицы
Для решения 19 задания ЕГЭ необходимо повторить следующие темы:
- со счетчиком
- Работа с одномерными массивами
- Работа с двумерными массивами (матрицами)
- Понятие главной диагонали матрицы: элементы матрицы главной диагонали имеют совпадающие номера строки и столбца:
т.е. формула элементов главной диагонали:
Решение заданий 6 ЕГЭ по информатике для 2021
Задание демонстрационного варианта 2022 года ФИПИ
Плейлист видеоразборов задания на YouTube:6_1 new: Определите, при каком наименьшем введённом значении переменной s программа выведет число 256:
var k,n,p,l,s,x:integer; var s, n: integer; begin readln (s); n := 1; while s <=45 do begin s := s + 4; n := n * 2 end; writeln(n) end.
s = int(input()) n = 1 while s <= 45: s = s + 4 n = n * 2 print( n )
📹 Видеорешение подобного 6 задания на Python:
- ✎ Способ 1 (программный):
Pascalabc.net:begin var s1 := 1; while true do // внешний цикл, бесконечный begin var s := s1; // — код из условия задания — // var n := 1; while s <= 45 do // внутренний цикл из задания begin s := s + 4; n := n * 2; end; // — конец кода из условия задания — // if n = 256 then // если найдено, то выводим соответствующее s begin print(s1); break; // выход из бесконечного цикла end; s1 := s1 + 1; // end; end.
s1 = 1 while True: # внешний цикл, бесконечный s = s1 # — код из условия задания — n = 1 while s <= 45: s = s + 4 n = n * 2 # — конец кода из условия задания — if n == 256: print(s1) break s1 += 1
Ответ: 14
6_2 new: Определите, при каком наибольшем введённом значении переменной s программа выведет число 96:
var s, n: integer; begin readln (s); n := 3; while s <= 51 do begin s := s + 7; n := n * 2 end; writeln(n) end.
s = int(input()) n = 3 while s <= 51: s = s + 7 n = n * 2 print( n )
- ✎ Способ 1 (программный):
Pascalabc.net:begin var s1 := 50; while true do // внешний цикл, бесконечный begin var s := s1; // — код из условия задания — // var n := 3; while s <= 51 do // внутренний цикл из задания begin s := s + 7; n := n * 2; end; // — конец кода из условия задания — // if n = 96 then // если найдено, то выводим соответствующее s begin print(s1); break; // выход из бесконечного цикла end; s1 := s1 — 1; // end; end.
s1 = 50 while True: # внешний цикл, бесконечный s = s1 # — код из условия задания — n = 3 while s <= 51: s = s + 7 n = n * 2 # — конец кода из условия задания — if n == 96: print(s1) break s1 -= 1
Ответ: 23
6_3 new::
Сколько существует различных значений d , оканчивающихся на 8, при вводе которых эта приведенная программа выведет число 50?
var S, N, d: integer; begin readln(d); S := 15; N := 10; while S <= 2400 do begin S := S + d; N := N + 5; end; writeln(N); end.
d = int(input()) S = 15 N = 10 while S <= 2400: S = S + d N = N + 5 print(N)
- ✎ Способ 1 (программный):
Pascalabc.net:begin var counter:=0; var d1:=1; while true do begin var d := d1; // из условия задачи var s := 15; var n := 10; while s <= 2400 do begin s := s + d; n:=n + 5; end; // проверка условий: увеличение счетчика if (d mod 10 = 8) and (n = 50) then begin counter+=1;; end; d1 += 1; // выход из бесконечного цикла if d1 = 2400 then break; end; print (counter) end.
counter = 0 d1 = 1 while True: s = 15 n = 10 d = d1 # — код из условия задания — while s <= 2400: s = s + d n = n + 5 if d%10==8 and n==50: counter+=1 d1=d1+1 if d1 == 2400: break print (counter)
Ответ: 4
6_4 new:
Определите наименьшее и наибольшее введённое значение переменной s , при котором программа выведет число 210. В ответ запишите оба числа в порядке убывания без пробелов и других разделителей
var s, n: integer; begin readln(s); n := 600; while n > s do begin s := s + 3; n := n — 6 end; writeln(n) end.
s = int(input()) n = 600 while n > s: s = s + 3 n = n — 6 print(n)
- ✎ Способ 1 (программный):
begin var s_ := -100; while true do begin var n := 600; var s := s_; while n > s do begin s := s + 3; n := n — 6 end; if n = 210 then print(s_); s_ += 1; if s > 1000 then break; end; end.
s_ = -100 while True: # внешний цикл, бесконечный s = s_ n = 600 # — код из условия задания — while n > s: s = s + 3 n = n — 6 # — конец кода из условия задания — if n == 210: print(s_) s_ += 1 if s > 1000: break
Ответ: 2315
6_5 new:
Определите, при каком наибольшем положительном введённом значении переменной s программа выведет трёхзначное число.
var s, n: integer; begin readln (s); n := 200; while s div n >= 2 do begin s := s + 5; n := n + 5 end; writeln(s) end.
s = int(input()) n = 200 while s // n >= 2: s = s + 5 n = n + 5 print(s)
- ✎ Способ 1 (программный):
begin var s_ := 1000; while true do begin var n := 200; var s := s_; while s div n >= 2 do begin s := s + 5; n := n + 5 end; if (s > 99) and (s<1000) then begin print(s_); break; end; s_ -= 1; end; end.
s_ = 1000 while True: # внешний цикл, бесконечный s = s_ n = 200 # — код из условия задания — while s // n >=2: s = s + 5 n = n + 5 # — конец кода из условия задания — if 99 < s < 1000: print(s_) break s_ -= 1
Ответ: 699
6_6 new:
Получив на вход некоторое натуральное число X , этот алгоритм печатает одно число. Сколько существует чисел Х , для которых алгоритм напечатает число на отрезке [2;500]?
var x, s, n: integer; begin readln(x); s := 6 * (x div 15); n := 1; while s < 300 do begin s := s + 18; n := n * 2 end; writeln(n) end.
x = int(input()) s = 6 * (x // 15) n = 1 while s < 300: s = s + 18 n = n * 2 print(n)
Задание 6. Анализ программ
За правильное выполненное задание получишь 1 балл. На решение отводится примерно 4 минуты.
Задачи для тренировки
Запишите число, которое будет напечатано в результате выполнения следующей программы. Для Вашего удобства программа представлена на пяти языках программирования.
using namespace std;
while (s 1200 do
begin
s:=s*x;
n:=n+4;
end;
write(n)
end.