751.31K
Категория: ПрограммированиеПрограммирование

Методика подготовки обучающихся к решению задачи ЕГЭ по информатике и ИКТ № 27

1.

МЕТОДИКА ПОДГОТОВКИ
ОБУЧАЮЩИХСЯ К РЕШЕНИЮ
ЗАДАЧИ ЕГЭ ПО
ИНФОРМАТИКЕ И ИКТ №27
Учитель информатики
МБОУ «Гимназия №11
им. К.А. Тренева» г. Симферополя
Т.Ю. Буркова

2.

ОСНОВНЫЕ ХАРАКТЕРИСТИКИ
ЗАДАЧИ 27
Уровень сложности – высокий
Время выполнения - 55 минут.
Максимальный первичный балл – 4 балла.
Элементы содержания, проверяемые на ЕГЭ: Основные этапы разработки
программ. Разбиение задачи на подзадачи. Умение создавать собственные
программы (30–50 строк) для решения задач средней сложности
Проверяемые умения или способы действий: Создавать программы на
языке программирования по их описанию

3.

КОДИФИКАТОР ЭЛЕМЕНТОВ СОДЕРЖАНИЯ И ТРЕБОВАНИЙ К
УРОВНЮ ПОДГОТОВКИ ВЫПУСКНИКОВ ОБРАЗОВАТЕЛЬНЫХ
ОРГАНИЗАЦИЙ ДЛЯ ПРОВЕДЕНИЯ ЕДИНОГО
ГОСУДАРСТВЕННОГО ЭКЗАМЕНА ПО ИНФОРМАТИКЕ И ИКТ
Возможные алгоритмические задачи для подраздела 1.1 перечня требований к уровню подготовки выпускников,
достижение которых проверяется на едином государственном экзамене по информатике и ИКТ.
− Нахождение минимума и максимума двух, трех, четырех данных чисел без использования массивов и циклов. −
Нахождение всех корней заданного квадратного уравнения.
− Запись натурального числа в позиционной системе с основанием, меньшим или равным 10. Обработка и
преобразование такой записи числа.
− Нахождение сумм, произведений элементов данной конечной числовой последовательности (или массива).
− Использование цикла для решения простых переборных задач (поиск наименьшего простого делителя данного
натурального числа, проверка числа на простоту и т.д.).
− Заполнение элементов одномерного и двумерного массивов по заданным правилам.
− Операции с элементами массива. Линейный поиск элемента. Вставка и удаление элементов в массиве. Перестановка
элементов данного массива в обратном порядке. Суммирование элементов массива. Проверка соответствия элементов
массива некоторому условию.
− Нахождение второго по величине (второго максимального или второго минимального) значения в данном массиве за
однократный просмотр массива.
− Нахождение минимального (максимального) значения в данном массиве и количества элементов, равных ему, за
однократный просмотр массива.
− Операции с элементами массива, отобранных по некоторому условию (например, нахождение минимального четного
элемента в массиве, нахождение количества и суммы всех четных элементов в массиве).
− Сортировка массива. − Слияние двух упорядоченных массивов в один без использования сортировки.
− Обработка отдельных символов данной строки. Подсчет частоты появления символа в строке.
− Работа с подстроками данной строки с разбиением на слова по пробельным символам. Поиск подстроки внутри данной
строки, замена найденной подстроки на другую строку.

4.

ЗАДАЧА А
• Максимальный балл
– 2 балла
• Решение может быть
неэффективным по
времени и по памяти
• Может быть указано
исходное количество
обрабатываемых
значений
ЗАДАЧА Б
• Максимальный балл
• – 4 балла
• Решение должно быть
эффективным
по времени и
по памяти

5.

ЭФФЕКТИВНОСТЬ ПО ВРЕМЕНИ
Время работы программы пропорционально количеству
входных данных, т.е. при увеличении N в k раз время работы
программы должно увеличиваться не более чем в k раз.

6.

ЭФФЕКТИВНОСТЬ ПО ПАМЯТИ
• Не используются массивы и другие структуры данных,
размер которых зависит от количества входных
элементов

7.

ПЕРЕБОРНОЕ РЕШЕНИЕ
(ЗАДАЧА А)
i
i
1
j
1
2
3
4
5
6
7
(n)
j
2
3
4
5
6
7
1
v
v
v
v
v
v
1
v
v
v
v
v
2
v
v
v
v
3
v
v
v
4
v
v
5
v
6
7
(n)
2
3
4
5
6
7
v
v
v
v
v
v
v
v
v
v

8.

ПЕРЕБОРНОЕ РЕШЕНИЕ
(ЗАДАЧА А)
i
j
i
1
1
2
2
3
4
5
6
7
v
v
v
v
v
v
v
v
v
v
v
2
v
v
v
v
3
v
v
v
4
v
v
5
v
6
3
4
5
6
j
1
2
3
1
7
(n)
4
5
6
7
v
v
v
v
v
v
v
v
v
v
7
(n)
i
1
j
i+1
2
.
.
.
.
N-1
i
1
N
j
i+k
2
.
.
.
.
N-k
N

9.

ПЕРЕБОРНОЕ РЕШЕНИЕ
(ЗАДАЧА А)
i1
i2
i3
i4
i5
i6
1
1
1
1
1
1
2
2
2
2
2
2

10.

НА ЧТО ОБРАТИТЬ ВНИМАНИЕ
• Параметры изменения счетчиков
• Инициализация счетчиков, переменных для поиска
максимальных и минимальных значений
• Вывод результата
• Типы данных
• Оформление решения
• Пояснение

11.

• Компьютер наземной станции слежения получает от объектов –
самолетов, находящихся в зоне ее работы, идентификационные
сигналы, представляющие собой последовательность из N целых
положительных чисел. Каждый объект направляет на наземную
станцию уникальное число, т.е. все числа в получаемой станцией
последовательности различны. Обработка сигнала представляет собой
рассмотрение всех пар различных элементов последовательности, при
этом элементы пары не обязаны быть переданы непосредственно друг
за другом, порядок элементов в паре не важен. Считается, что возникла
критическая ситуация, если произведение элементов некоторой пары
кратно 58. Необходимо определить общее количество возникших
критических ситуаций.
• Описание входных и выходных данных.
• В первой строке входных данных задается количество чисел N (1<= N
<= 1000). В каждой из последующих N строк записано одно целое
положительное число, не превышающее 10 000.
• В качестве результата программа должна напечатать одно число:
общее количество возникших критических ситуаций.

12.

КОГДА ПРОИЗВЕДЕНИЕ ДВУХ
ЧИСЕЛ ДЕЛИТСЯ НА 58?
Когда оба
сомножителя
делятся на 58.
n58*(n58-1)/2
Только один
сомножитель
делится на 58.
n58*(N-n58)
Одно число
делится на 2,
другое на 29.
n2*n29

13.

КОМБИНАТОРНАЯ ФОРМУЛА
i
i
1
j
1
2
3
4
j
2
3
4
5
6
7(n)
v
v
v
v
v
v
1
v
v
v
v
v
2
v
v
v
v
3
v
v
v
4
v
v
5
v
6
5
6
7
(n)
1
2
3
4
5
6
7(n)
v
v
v
v
v
v
v
v
v
v
7
(n)
n(n-1)/2
(n-k+1)(n-k)/2

14.

n58 = 0
n29 = 0
n2 = 0
N = int(input())
for i in range(N):
temp= int(input())
if temp%58 == 0:
n58++
elif temp%29 ==0:
n29++
elif temp%2 == 0:
n2++
crypt = (n58*(n58-1))/2 + n58*(N-n58) +n29*n2
print(crypt)

15.

16.

var a: array [1..5] of integer;
kp, k13, kn13, i, n, b: integer;
begin
kp:=0;
k13:=0;
kn13:=0;
for i:=1 to 5 do readln( a[i]);
for i:=6 to n do
begin
if a[i mod 5] mod 13=0
then k13:= k13 + 1
else kn13 :=kn13 + 1;
readln (b);
if b mod 13 <>0
then kp:= kp + k13
else kp := kp + k13 + kn13;
a[i mod 5] :=b;
end;
writeln (kp);
end.

17.

• Датчик передает каждую секунду по каналу связи неотрицательное
целое число, не превосходящее 1000, - текущий результат измерений.
Временем, в течение которого происходит передача, можно
пренебречь.
• Необходимо найти в заданной серии показаний датчика минимальное
четное произведение двух показаний, между моментами передачи
которых прошло не менее 15 секунд. Если получить такое произведение
не удается, ответ считается равным -1. Общее количество показаний
датчика в серии не превышает 10 000.
• А. Напишите программу, в которой входные данные будут запоминаться
в массиве, после чего будут проверены все возможные пары элементов.
• Б. Напишите программу, которая будет эффективной по времени и по
памяти.

18.

#include <iostream>
#include <queue>
using namespace std;
int main(){
queue <int> mas;
int N, a;
long int min, min_out15_even, minn_out15, temp;
cin >> N;
for (int i=0; i<15; i++){
cin >> a;
mas.push(a);
}
min = -1;
min_out15_even = 0;
min_out15 = 0;
for (i=0; i<N-15; i++){
a = mas.pop();
if ((a%2==0)&&(min_out15_even==0 || a<min_out15_even)) min_out15_even = a;
if (min_out15==0 || a<min_out15) min_out15 = a;
cin >> a;
mas.push(a);
if (a%2==0) temp=min_out15*a;
else temp=min_out15_even*a;
if (min==-1 || min>temp) min = temp;
}
cout << min <<endl;
}

19.

• А. Имеется набор данных, состоящий из 6 пар
положительных целых чисел. Необходимо выбрать из
каждой пары одно число так, чтобы сумма всех выбранных
чисел не делилась на 5 и при этом была максимально
возможной. Если получить требуемую сумму невозможно, в
качестве ответа нужно выдать 0.
• Б. Имеется набор данных, состоящий из пар положительных
целых чисел. Необходимо выбрать из каждой пары одно
число так, чтобы сумма всех выбранных чисел не делилась на
5 и при этом была максимально возможной. Если получить
требуемую сумму невозможно, в качестве ответа нужно
выдать 0.

20.

#include <iostream>
using namespace std;
int main(){
int max, max_t, min_t, min_d, temp;
int N;
max = 0;
min_d = 0;
cin >> N;
for (int i=0;i<N;i++){
cin >> max_t >> min_t;
if (min_t > max_t){
temp = max_t;
max_t = min_t;
main_t = temp;
}
max += max_t;
temp = max_t – min_t;
if (temp%5 != 0){
if (min_d == 0 || min_d > temp) min_d = temp;
}
}
If (max %5 != 0) cout << max << endl;
else if (min_d >0){
max -= min_d;
cout << max << endl;
} else cout << 0 << endl;
}
English     Русский Правила