Главная Посты Курсы Связь О сайте

ЕГЭ по информатике 2022 - Задание 6 (Метод перебора)



Сегодня посмотрим 6 задание из ЕГЭ по информатике 2022.


В этом уроке мы будем использовать метод перебора для решения различных задач из 6 задания ЕГЭ по информатике 2022.


Решать задачи будем на языке Python.



Задача (Классическая)

Определите, при каком наименьшем введённом значении переменной s программа выведет число 23. Для Вашего удобства программа представлена на трёх языках программирования.


ПаскальPythonC++
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 <iostream>
using namespace std;
int main() { 
int s, n = 50;
cin >> s;    
while (s > 0) {
  s = s / 2;
  n = n - 3;
}
cout << n << endl;
return 0;
}

Источник задачи: https://kpolyakov.spb.ru/

Решение:

Решим задачу с помощью перебора.


Будем подставлять каждое число в диапазоне от 1 до 1000 в наш алгоритм с помощью цикла for. Узнаем, при каких значениях на выходе программа будет печатать число 23.


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
257
258
259
260
261
262
263
264
265
266
267
268
и т.д.

Самое маленькое число, которое подходит, это 256.


Ответ: 256



Ещё одна задача-ловушка из 6 задания ЕГЭ по информатике 2022.



Задача (С подвохом)

Определите, сколько существует целых положительных значений, подаваемых на вход программе, при которых программа выведет 27.


ПаскальPythonC++
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 <iostream>
using namespace std;
int main() { 
int s, n = 3;
cin >> s;    
while (s*n < 243) {
  s = s / 3;
  n = n * 9;
}
cout << n << endl;
return 0;
}


Решение:

В этой программе подвох заключается в том, что, если мы будем перебирать числа от 1 до 1000, то программа зависнет и ничего не напечатает.


В таких случаях можно попробовать перебрать числа с 1000 до 1.


for i in range(1000, 0, -1):
  s = i
  n = 3
  while s*n < 243:
    s = s // 3
    n = n * 9
  if n==27: print(i)

Третий параметр "-1" для цикла for означает, что мы перебираем числа с 1000 до 1 в обратном порядке.


Программа напечатает числа с 80 до 27.


(80-27)+1=53+1=54

Если проверить на небольших числа, то мы должны прибавить 1 к разнице двух чисел.


Ответ: 54



Закрепим метод перебора в 6 задании из ЕГЭ по информатике 2022.



Задача (Закрепление)

(А.Г. Минак) Определите, при каком введённом значении переменной s программа выведет число 16.


ПаскальPythonC++
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 <iostream>
using namespace std;
int main() { 
int s, n = 0;
cin >> s;    
while (s*s < 101) {
  s = s + 1;
  n = n + 2;
}
cout << n << endl;
return 0;
}

Источник задачи: https://kpolyakov.spb.ru/

Решение:

Здесь справляется стандартный перебор от 1 до 1000.


for i in range(1, 1001):
  s = i
  n = 0
  while s*s < 101:
    s = s + 1
    n = n + 2
  if n==16: print(i)

Ответ: 3

Счастливых экзаменов!






22-10-2021 в 17:51:55





Похожая статья:

ЕГЭ по информатике - Задание 12 (Неудержимые нули!)

На этом уроке будем проходить, как решать 12 задание из ЕГЭ по информа...

Категория: ЕГЭ  Подкатегория: -
Дата: 15-01-2018 в 16:47:34 0


Комментарии:

кстати, во вторую задачу можно поставить счетчик k = 0(перед циклом for i in range(1000, 0, -1)), а в самом цикле while s*n < 243, например, после n = n * 9, написать, что k += 1 так, программа будет считать, сколько раз выполнился цикл)
вставьте текст 15-11-2021 в 20:29:52



Оставить коментарий:



Напишите email, чтобы получать сообщения о новых комментариях (необязательно):


Задача против робота. Расположите картинки горизонтально: