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

Изменения структуры КИМ 2020 года

1.

ЕГЭ 2020

2.

Изменения структуры КИМ 2020 года по сравнению с КИМ 2019 года
отсутствуют
Рекомендации по выполнению заданий Части 1
Следует внимательно читать условие задачи
Аккуратно выполнять арифметические вычисления
Записывать ответы в бланк, в соответствии с образцами
написания символов

3.

Задание 24
Спецификация
Задание проверяет
Умение прочесть фрагмент программы на языке
программирования и исправить допущенные ошбки
Уровень сложности
Повышенный
Максимальный балл 3

4.

Задание 24
Рекомендации
Следует искать только алгоритмические ошибки.
Ответы не требуют обоснования.
Следует исправлять приведенную программу, а не приводить другое
решение.
Ошибка считается исправленной, если выполнены оба следующих
условия:
а) правильно указана строка с ошибкой;
б) указан такой новый вариант строки, что при исправлении
другой ошибки получается правильная программа.
За указание в качестве ошибочной верной строки программы балл
снижается.

5.

Задание 25
Спецификация
Задание проверяет
Умение написать короткую (10–15 строк) простую программу на
языке программирования
Уровень сложности
Высокий
Максимальный балл 2

6.

Задание 25
Типичные ошибки
В цикле происходит выход за границу массива
Не инициализируется или неверно инициализируются переменные (минимум,
максимум, счетчик, сумма, произведение)
Неверно осуществляется проверка делимости, размерности числа
(однозначное, двузначное, …), последней (младшей) цифры числа и др.
В сложном логическом условии простые проверки верны, но условие в целом
построено неверно
Исходный массив не изменяется
Отсутствует вывод ответа, или ответ выводится не полностью
(например, только один элемент массива ввиду пропущенного
цикла вывода элементов или операторных скобок)
Используется переменная, не объявленная в разделе описания переменных
Перепутаны знаки «больше»и «меньше», «больше равно», «меньше равно»
Приведен неверный алгоритм решения задачи

7.

Задание 26
Спецификация
Задание проверяет
Умение построить дерево игры по заданному алгоритму и
обосновать выигрышную стратегию
Уровень сложности
Высокий
Максимальный балл 3

8.

Задание 26
Рекомендации
В решении должна быть описана выигрышная стратегия. Описать
стратегию игрока – значит описать, какой ход игрок должен сделать в
любой ситуации, которая ему может встретиться при различной игре
противника.
Выигрышная стратегия должна быть обоснована. Для выигрывающего
игрока в каждой позиции должен быть указан один ход, для
проигрывающего игрока должны быть указаны все возможные ходы.
В задании 3 должно быть представлено дерево всех партий, возможных
при описанной стратегии, в виде таблицы или графа.
Ошибка в решении, не искажающая основного замысла и не приведшая к
неверному ответу, например арифметическая ошибка при вычислении
количества камней в заключительной позиции, при оценке решения не
учитывается.

9.

Задание 26
Типичные ошибки
Получен неверный ответ вследствие допущенных арифметических
ошибок в вычислениях
Выполнены только одно или два задания
Отсутствует полное и строгое обоснование стратегии
Правильно указан выигрывающий игрок, но нет описания стратегии
Построено дерево игры, но не указана выигрышная стратегия
В задании 3 отсутствует дерево всех партий
В задании 3 приведено словесное описание стратегии или указаны
ссылки на предыдущие задания

10.

Задание 27
Спецификация
Задание проверяет
Умение создавать собственные программы (30–50 строк) для
решения задач средней сложности
Уровень сложности
Высокий
Максимальный балл 4

11.

Демо 2020
На вход программы поступает последовательность из n целых
положительных чисел. Рассматриваются все пары элементов
последовательности ai и aj, такие что i < j и ai > aj (первый элемент пары
больше второго; i и j – порядковые номера чисел в последовательности
входных данных). Среди пар, удовлетворяющих этому условию, необходимо
найти и напечатать пару с максимальной суммой элементов, которая делится
на m = 120. Если среди найденных пар максимальную сумму имеют
несколько, то можно напечатать любую из них.
Описание входных и выходных данных
В первой строке входных данных задаётся количество чисел n
(2 ≤ n ≤ 12 000). В каждой из последующих n строк записано одно целое
положительное число, не превышающее 10 000.
В качестве результата программа должна напечатать элементы искомой
пары. Если таких пар несколько, можно вывести любую из них.
Гарантируется, что хотя бы одна такая пара в последовательности есть.

12.

Демо 2020
Пример входных данных:
6
60
140
61
100
300
59
Пример выходных данных для приведённого выше примера входных данных:
140 100
Пояснение.
Из шести заданных чисел можно составить три пары, сумма элементов
которых делится на m=120: 60+300, 140+100 и 61+59. Во второй и третьей из
этих пар первый элемент больше второго, но во второй паре сумма больше.

13.

Демо 2020
Неэффективное решение на 2 балла
left := 0; right := 0;
for i := 1 to N - 1 do
for j := i + 1 to N do
if (a[i] > a[j]) and ((a[i] + a[j]) mod m = 0) then
if a[i] + a[j] > left + right then
begin
left := a[i];
right := a[j]
end;

14.

Демо 2020
Эффективное решение на 4 балла
Сумма ai и aj делится на m, если сумма остатков этих чисел от деления на m
равна 0 или m.
Пример
m=120, ai =140, aj=100, 140+100=240 делится на 120 без остатка.
140 mod 120 = 20, 100 mod 120 = 100, 20+100=120
Для каждого из остатков от деления на m среди уже просмотренных
элементов будем хранить максимальное число, имеющее
соответствующий остаток от деления на m.
Для этого будем использовать массив r длиной m, изначально с элементами,
равными 0.
Все считанные значения при этом можно не хранить.
Очередное считанное число a будем рассматривать как возможный правый
элемент искомой пары.

15.

Вход: 60 140 61 100 300 59
r
m
120
0
0
0
0

0
0
0
0
1
2
3

11
7
11
8
11
9
пара
a
0
left
0
остаток
0
right
0

16.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
0
0
0
0
0
0
0
20
59
60
61
10
0
11
9
пара
a
60
left
0
остаток
60
right
0
0 < 60 пары нет

17.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
0
0
60
0
0
0
0
20
59
60
61
10
0
11
9
пара
a
60
left
0
остаток
60
right
0
0 < 60 пары нет
r[60] = 60

18.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
60
0
0
0
0
20
59
60
61
10
0
11
9
пара
a
140
left
0
остаток
20
right
0
0 < 140 пары нет

19.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
60
0
0
0
0
20
59
60
61
10
0
11
9
пара
a
140
left
0
остаток
20
right
0
0 < 140 пары нет
r[20] = 140

20.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
60
61
0
0
0
20
59
60
61
10
0
11
9
пара
a
61
left
0
остаток
61
right
0
0 < 61 пары нет

21.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
60
61
0
0
0
20
59
60
61
10
0
11
9
пара
a
61
left
0
остаток
61
right
0
0 < 61 пары нет
r[61]=61

22.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
60
61
0
0
0
20
59
60
61
10
0
11
9
пара
a
100
left
140
остаток
100
right
100
140 > 100 пара есть

23.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
60
61
10
0
0
0
20
59
60
61
10
0
11
9
пара
a
100
left
140
остаток
100
right
100
140 > 100 пара есть
r[100]=100

24.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
60
61
10
0
0
0
20
59
60
61
10
0
11
9
пара
a
300
left
140
остаток
60
right
100
60 < 300 пары нет

25.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
300 61
10
0
0
0
20
59
60
10
0
11
9
61
пара
a
300
left
140
остаток
60
right
100
60 < 300 пары нет
r[60]=300

26.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
0
300 61
10
0
0
0
20
59
60
10
0
11
9
61
пара
a
59
left
140
остаток
59
right
100
61 > 59 пара есть
r[60]=300

27.

Вход: 60 140 61 100 300 59
m
i<j
r
120
ai > aj
0
14
0
59
300 61
10
0
0
0
20
59
60
10
0
11
9
61
пара
a
59
left
140
остаток
61
right
100
61 > 59 пара есть
r[59]=59
Ответ: 140 100

28.

Демо 2020
const m = 120; {количество различных остатков}
var
{хранение максимального значения для каждого из остатков}
r: array[0..m-1] of integer;
n, a, i, p, left, right: integer;
begin
readln(n);
{обнуление массива r}
for i := 0 to m - 1 do
r[i] := 0;
{обнуление переменных для записи ответа}
left := 0; right := 0;

29.

for i:=1 to n do begin
readln(a);
p:=a mod m;
if (r[(m–p) mod m]>a) and (r[(m-p) mod m]+a>left+right) then
begin
left:=r[(m-p) mod m]
right:=a;
end;
if a>r[p] then
r[p]:=a;
end;
writeln(left,’ ‘,right);
English     Русский Правила