В начало страницы

Вариант «ЕГЭ по информатике 03.07.2020. Основная волна, решение Имаева−Зубовой «Котолис»» (ОСН-2020)

Список тем

Д24 C1, Д25 C2, Д26 C3, Д27 C4

Задания

Задание Д24 C1 (тема Д24 C1, №26996)

Текст задания

На обработку поступает последовательность из четырёх неотрицательных чисел. Нужно написать программу, которая выводит на экран количество четных чисел, и их сумму. Если таких чисел нет, требуется вывести на экран «NO». Для решения этой задачи ученик написал такую программу:

 

Бейсик Python

count = 0

sum = 0

FOR I = 1 TO 4

    INPUT x

    IF x mod 2 = 0 THEN

        sum = x + i

        count = count + 1

    END IF

NEXT I

IF sum > 0 THEN

    PRINT count

    PRINT sum

ELSE

    PRINT "NO"

END IF

count = 0

sum = 0

for i in range(1,5):

    x = int(input())

    if x % 2 == 0:

        sum = x + i

        count = count + 1

if sum > 0:

    print(count)

    print(sum)

else:

    print("NO")

Алгоритмический язык Паскаль

алг

нач

    цел sum,i,x,count

    count := 0

    sum := 0

    нц для i от 1 до 4

        ввод x

        если mod(x,2) = 0 то

            sum := x + i

            count := count+1

        все

    кц

    если sum > 0 то

        вывод count, нс

        вывод sum

    иначе

        вывод "NO"

    все

кон

var sum,i,x,count: integer;

begin

    count := 0;

    sum := 0;

    for i := 1 to 4 do

    begin

        read (x);

        if x mod 2 = 0 then begin

            sum := x + i;

            count := count+1;

        end

    end;

    if sum > 0 then

    begin

        writeln(count);

        writeln(sum);

    end

    else

        writeln('NO');

end.

Си++

#include <iostream>

using namespace std;

int main(void)

{

    int sum, i, x, count;

    count = 0;

    sum = 0;

    for (i = 1; i < 5; i++)

    {

        cin >> x;

        if (x % 2 == 0)

        {

            sum = x + i;

            count = count+1;

        }

    }

    if (sum > 0)

    {

        cout << count << "\n";

        cout << sum << "\n";

    }

    else

        cout << "NO\n";

}

 

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе набора 70 93 50 19.

2. Приведите пример такого набора чисел, что, несмотря на ошибки, программа печатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько, но не больше двух). Для каждой ошибки: выпишите строку, в которой сделана ошибка, и приведите правильный вариант строки.

Задание Д25 C2 (тема Д25 C2, №26997)

Текст задания

Дан массив, содержащий 2020 целых чисел, от −10000 до 10000. Необходимо найти наибольший кратный 4 элемент этого массива. После чего в массиве изменить все элементы кратные 4 на это значение и вывести массив.

Напишите на одном из языков программирования программу для решения этой задачи. В качестве результата программа должна вывести изменённый массив, по одному элементу в строке. Например, для исходного массива из 5 элементов 112 4 27 95 148 программа должна вывести числа 148 148 27 95 148 по одному числу в строке. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

 

БейсикPython

CONST N=2020

DIM A(N) AS INTEGER

DIM I, M, K AS INTEGER

FOR I = 1 TO N

    INPUT A(I)

NEXT I

END

# допускается также

#использование #целочисленных

# переменных m, k

a = []

N = 2020

for i in range(0, N):

    a.append(int(input()))

ПаскальАлгоритмический язык

const

    N=2020;

var

    a: array [1..N] of integer;

    i, m, k: integer;

begin

    for i:=1 to N do

        readln(a[i]);

    …

end.

алг

нач

    цел N=2020

    целтаб a[1:N]

    цел i, m, k

    нц для i от 1 до N

        ввод a[i]

    кц

    …

кон

Си++

#include <iostream>

using namespace std;

const int N = 2020;

int main(){

    int a[N];

    int i, m, k;

    for (i=0; i < N; i++)

        cin >> a[i];

    …

    return 0;

}

 

 

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

Задание Д26 C3 (тема Д26 C3, №26998)

Текст задания

Два игрока, Петя и Ваня, играют в следующую игру. У игроков есть табличка, на которой записана пара неотрицательных чисел. Будем называть эту пару чисел позицией. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может заменить одно из чисел пары по своему выбору на сумму обоих чисел. Так, например, если перед ходом игрока была позиция (2, 4), то после его хода будет позиция (6, 4) или (2, 6). Игра завершается в тот момент, когда сумма чисел пары становится не менее 67. Победителем считается игрок, сделавший последний ход, т. е. первым получивший такую пару, что сумма ее чисел стало не менее 67.

1. Перед ходом Пети на табличке записана пара чисел (12, S). Укажите минимальное значение S — такое, что Петя может выиграть одним своим первым ходом.

2. Для начальной позиции (15, 14) укажите, кто из игроков имеет выигрышную стратегию. Опишите выигрышную стратегию.

3. Для начальной позиции (2, 4) укажите, кто из игроков имеет выигрышную стратегию. Постройте дерево всех партий, возможных при этой выигрышной стратегии (в виде рисунка или таблицы). В узлах дерева указывайте позиции, на рёбрах рекомендуется указывать ходы. Дерево не должно содержать партии, невозможные при реализации выигрывающим игроком своей выигрышной стратегии. Например, полное дерево игры не является верным ответом на это задание.

Задание Д27 C4 (тема Д27 C4, №26999)

Текст задания

На вход программы поступает последовательность из N натуральных чисел. Рассматриваются все пары различных элементов последовательности, у которых различные остатки от деления на d = 160 и хотя бы одно из чисел делится на p = 7. Среди таких пар, необходимо найти и вывести пару с максимальной суммой элементов.

Описание входных и выходных данных.

В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 1000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10000. В качестве результата программа должна напечатать элементы искомой пары. Если среди найденных пар максимальную сумму имеют несколько, то можно напечатать любую из них. Если таких пар нет, то вывести два нуля.

Пример входных данных:

4

168

7

320

328

Пример выходных данных для приведённого выше примера входных данных:

168 320

Пояснение: Из 4 чисел можно составить 6 пар. В данном случае условиям удовлетворяют пары: 168 и 320, 168 и 7, 320 и 7, 328 и 7. Максимальную сумму дает пара 168 и 320.

Требуется написать эффективную по времени и по памяти программу для решения описанной задачи. Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз. Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 Кбайт и не увеличивается с ростом N.

Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и по памяти, — 4 балла. Максимальная оценка за правильную программу, эффективную только по времени — 3 балла. Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, — 2 балла. Вы можете сдать одну программу или две программы решения задачи (например, одна из программ может быть менее эффективна). Если Вы сдадите две программы, то каждая из них будет оцениваться независимо от другой, итоговой станет бо́льшая из двух оценок.

Перед текстом программы обязательно кратко опишите алгоритм решения. Укажите используемый язык программирования и его версию.