№№ заданий Пояснения Ответы Ключ Добавить инструкцию Критерии
Источник Раздел кодификатора ФИПИ Справка
PDF-версия PDF-версия (вертикальная) PDF-версия (крупный шрифт) PDF-версия (с большим полем) Версия для копирования в MS Word
Вариант № 4871411

1.

Найдите значение выражения 1116 + 118 : 112. Ответ запишите в двоичной системе счисления.

2.

Логическая функция F задаётся выражением ((xy ) ∧ (yw)) ∨ (z ≡ ( xy)).

Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.

Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.

 

Переменная 1Переменная 2Переменная 3Переменная 4Функция
????????????F
110
10
110

 

В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.

Пример. Пусть задано выражение xy, зависящее от двух переменных x и y, и фрагмент таблицы истинности:

 

Переменная 1Переменная 1Функция
??????F
010

 

Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.

3.

На рисунке схема дорог изображена в виде графа, в таблице содержатся сведения о длине этих дорог в километрах.

 

Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Известно, что длина кратчайшего пути из пункта A в пункт E не превышает 30 километров. Определите длину кратчайшего пути из пункта Г в пункт K. В ответе укажите целое число — длину пути в километрах.

4.

Ниже пред­став­ле­ны два фраг­мен­та таб­лиц из базы дан­ных о жи­те­лях мик­ро­рай­о­на. Каж­дая стро­ка таб­ли­цы 2 со­дер­жит ин­фор­ма­цию о ребёнке и об одном из его ро­ди­те­лей. Ин­фор­ма­ция пред­став­ле­на зна­че­ни­ем поля ID в со­от­вет­ству­ю­щей стро­ке таб­ли­цы 1. Опре­де­ли­те на ос­но­ва­нии при­ведённых дан­ных, у сколь­ких детей на мо­мент их рож­де­ния ма­те­рям было боль­ше 22 пол­ных лет. При вы­чис­ле­нии от­ве­та учи­ты­вай­те толь­ко ин­фор­ма­цию из при­ведённых фраг­мен­тов таб­лиц.

 

 

Таб­ли­ца 1
IDФа­ми­лия_И. О.ПолГод рож­де­ния
15Пет­ро­ва Н. А.Ж1944
22Ива­нен­ко И. М.М1940
23Ива­нен­ко М. И.М1968
24Ива­нен­ко М. М.М1993
32Будай А. И.Ж1960
33Будай В. С.Ж1987
35Будай С. С.М1965
42Ко­лад­зе А. С.Ж1941
43Ко­лад­зе Л. А.М1955
44Родэ О. С.М1990
46Родэ М. О.М2010
52Ауэр­ман А. М.Ж1995
73Ан­то­но­ва М. А.Ж1967
............

 

Таб­ли­ца 2
ID_Ро­ди­те­ляID_Ре­бен­ка
2223
4223
2324
7324
2232
4232
3233
3533
1535
3244
3544
2352
7352
......

5.

По каналу связи передаются сообщения, содержащие только семь букв: А, Б, Г, И, М, Р, Я. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны: А — 010, Б — 011, И — 10. Какое наименьшее количество двоичных знаков потребуется для кодирования слова ГРАММ?

Примечание. Условие Фано означает, что ни одно кодовое слово не является началом другого кодового слова.

6.

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 10000 преобразуется в запись 100001;

б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на 2.

Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.

Укажите такое наименьшее число N, для которого результат работы алгоритма больше 77. В ответе это число запишите в десятичной системе счисления.

7.

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

 

 Вклад, р. 4 %3 %
Агеев210000021840002249520
Агнесян200000208000214240
Сестров500005200053560
Кучкин230000023920002463760
 Общая сумма  4650000  4836000  4981080 

 

Определите общую сумму вкладов населения в банке в рублях после очередного начисления процентов, если процентная ставка будет составлять 10%.

 

8.

Определите, что будет напечатано в результате работы следующего фрагмента программы:

 

 

БейсикPython

DIM K, S AS INTEGER

S = 3

K = 1

WHILE K < 25

    S = S + K

    K = K + 2

WEND

PRINT S

s = 3

k = 1

while k < 25:

    s += k

    k += 2

print(s)

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

var k, s: integer;

begin

       s:=3;

       k:=1;

      while k < 25 do begin

            s:=s+k;

            k:=k+2;

       end;

      write(s);

end.

алг

нач

    цел k, s

    s := 3

    k := 1

    нц пока k < 25

        s := s + k

        k := k + 2

    кц

    вывод s

кон

Си++

#include <iostream>

using namespace std;

int main() {

    int s, k;

    s = 3, k = 1;

    while (k < 25) {

        s = s + k;

        k = k + 2;

    }

    cout << s << endl;

    return 0;

}

 

9.

Производится звукозапись музыкального фрагмента в формате стерео (двухканальная запись) с частотой дискретизации 32 кГц и 32-битным разрешением. Результаты записываются в файл, сжатие данных не производится; размер полученного файла 40 Мбайт. Затем производится повторная запись этого же фрагмента в формате моно (одноканальная запись) с частотой дискретизации 16 кГц и 16-битным разрешением. Сжатие данных не производилось.

Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только целое число, единицу измерения писать не нужно.

10.

В коробке лежат 64 цветных карандаша. Сообщение о том, что достали белый карандаш, несет 4 бита информации. Сколько белых карандашей было в коробке?

11.

Ниже на пяти языках программирования записаны две рекурсивные функции (процедуры): F и G.

 

БейсикPython

DECLARE SUB F(n)

DECLARE SUB G(n)

 

SUB F(n)

    IF n > 0 THEN G(n - 1)

END SUB

 

SUB G(n)

    PRINT "*"

    IF n > 1 THEN F(n - 2)

END SUB

def F(n):

    if n > 0:

        G(n - 1)

 

def G(n):

    print("*")

    if n > 1:

        F(n - 2)

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

procedure F(n: integer); forward;

procedure G(n: integer); forward;

 

procedure F(n: integer);

begin

    if n > 0 then

        G(n - 1);

end;

 

procedure G(n: integer);

begin

    writeln('*');

    if n > 1 then

        F(n - 2);

end;

алг F(цел n)

нач

    если n > 0 то

        G(n - 1)

    все

кон

алг G(цел n)

нач

    вывод "*"

    если n > 1 то

        F(n - 2)

    все

кон

Си

void F(int n);

void G(int n);

 

void F(int n){

    if (n > 0)

         G(n - 1);

}

 

void G(int n){

    printf("*");

    if (n > 1)

         F(n - 2);

}

 

Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(11)?

12.

В тер­ми­но­ло­гии сетей TCP/IP мас­кой под­се­ти на­зы­ва­ет­ся 32-раз­ряд­ное дво­ич­ное число, опре­де­ля­ю­щее, какие имен­но раз­ря­ды IP-ад­ре­са ком­пью­те­ра яв­ля­ют­ся об­щи­ми для всей под­се­ти – в этих раз­ря­дах маски стоит 1. Обыч­но маски за­пи­сы­ва­ют­ся в виде чет­вер­ки де­ся­тич­ных чисел - по тем же пра­ви­лам, что и IP-ад­ре­са. Для не­ко­то­рой под­се­ти ис­поль­зу­ет­ся маска 255.255.254.0. Сколь­ко раз­лич­ных ад­ре­сов ком­пью­те­ров тео­ре­ти­че­ски до­пус­ка­ет эта маска, если два ад­ре­са (адрес сети и ши­ро­ко­ве­ща­тель­ный) не ис­поль­зу­ют?

13.

В детскую игрушку «Набор юного шпиона» входят два одинаковых комплекта из четырех флажков различных цветов. Сколько различных тайных сообщений можно передать этими флажками, условившись менять выставленный флажок каждые пять минут и наблюдая за процессом 15 минут? Наблюдатель видит вынос первого флажка и две перемены флажка. При этом возможна смена флажка на флажок того же цвета.

14.

Исполнитель Т1000 «живёт» на бесконечной в обе стороны ленте, разделенной на клетки (одна из клеток является текущей, в ней находится исполнитель). Система команд Т1000 включает следующие:

 

влево – переместиться на одну клетку влево;

вправо – переместиться на одну клетку вправо;

записать X – записать в текущую клетку число Х.

если X команда – выполнить команду, если в текущей клетке записано число Х.

пока X команда – выполнять команду, пока в текущей клетке записано число X.

 

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

 

Дана программа:

пока 1 влево

пока 0 влево

влево

пока 1

{вправо

записать 0}

пока 0 вправо

влево

записать 1

влево

пока 0 влево

влево

 

Она выполняется начиная с крайней правой клетки с числом 1 в следующей начальной конфигурации (все остальные ячейки бесконечной ленты заполнены нулями и не показаны на схеме):

 

Как будет выглядеть лента после остановки программы?

 

1) 010001111110

2) 010100111110

3) 000111110010

4) 010110011110

15.

На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, 3, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.

Сколько существует различных путей из города А в город М, проходящих через город Ж, но не проходящих через город К?

16.

Укажите через запятую в порядке возрастания все десятичные числа, не превосходящие 25, запись которых в системе счисления с основанием четыре оканчивается на 11?

17.

В языке за­про­сов по­ис­ко­во­го сер­ве­ра для обо­зна­че­ния ло­ги­че­ской опе­ра­ции «ИЛИ» ис­поль­зу­ет­ся сим­вол «|», а для ло­ги­че­ской опе­ра­ции «И» - сим­вол «&».

В таб­ли­це при­ве­де­ны за­про­сы и ко­ли­че­ство най­ден­ных по ним стра­ниц не­ко­то­ро­го сег­мен­та сети Ин­тер­нет.

 

За­просНай­де­но стра­ниц
(в ты­ся­чах)
Спар­так45000
Красс2000
Ди­на­мо49000
Спар­так & Красс1700
Спар­так & Ди­на­мо36000

 

По за­про­су Ди­на­мо & Красс ни одной стра­ни­цы най­де­но не было.

Какое ко­ли­че­ство стра­ниц (в ты­ся­чах) будет най­де­но по за­про­су Спар­так | Ди­на­мо | Красс ?

Счи­та­ет­ся, что все за­про­сы вы­пол­ня­лись прак­ти­че­ски од­но­вре­мен­но, так что набор стра­ниц, со­дер­жа­щих все ис­ко­мые слова, не из­ме­нял­ся за время вы­пол­не­ния за­про­сов.

18.

Сколько существует целых значений числа A, при которых формула

 

((x < 6) → (x2 < A)) ∧ ((y2A) → (y ≤ 6))

 

тождественно истинна при любых целых неотрицательных x и y?

19.

Дан фрагмент программы, обрабатывающей двухмерный массив A[1..5,1..4]:

 

 

БейсикPython

k = 4

FOR m = 1 TO 4

    k = k + 1

    FOR n = 1 TO 5

        k = m - k

        A(n,m) = n*n+m*m-2*k

    NEXT n

NEXT m

 

k = 4

for m in range(1, 5):

   k += 1

   for n in range(1, 6):

      k=m-k

      A[n][m]=n*n+m*m-2*k

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

k:=4;

for m:=1 to 4 do begin

   k:=k+1;

   for n:=1 to 5 do begin

       k:=m-k;

       A[n,m]:=n*n+m*m-2*k;

    end;

end;

k:=4

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

    k:=k+1

    нц для n от 1 до 5

        k:=m-k

        A[n,m]:=n*n+m*m-2*k

    кц

кц

 

Си++

k = 4;

for (m = 1; m <= 4; m++) {

    k = k + 1;

    for (n = 1; n <= 5; n++) {

        k=m-k;

        A[n][m]=n*n+m*m-2*k;

    }

}

 

 

Чему будет равно значение A[3,1]?

20.

Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наибольшее из таких чисел x, при вводе которого алгоритм печатает сначала 2, а потом 4.

 

БейсикPython

DIM X, A, B AS INTEGER

INPUT X

A = 0: B = 0

WHILE X > 0

    IF X MOD 2 = 0 THEN

        A = A + 1

    ELSE

        B = B + X MOD 10

    END IF

    X = X \ 10

WEND

PRINT A

PRINT B

x = int(input())

a=0; b=0

while x > 0:

    if x%2 == 0:

        a += 1

    else:

        b += x%10

    x = x//10

print(a, b)

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

var x, a, b: longint;

begin

    readln(x);

    a := 0; b := 0;

    while x > 0 do

    begin

        if x mod 2= 0 then

            a := a + 1

        else

            b := b + x mod 10;

        x := x div 10;

    end;

    writeln(a); write(b);

end.

алг

нач

    цел x, a, b

    ввод x

    a := 0; b := 0

    нц пока x > 0

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

            то a := a+1

            иначе b := b + mod(x,10)

        все

        x := div(x,10)

    кц

    вывод a, нс, b

кон

Си++

#include <iostream>

using namespace std;

int main()

{

    int x, a, b;

    cin >> x;

    a = 0; b = 0;

    while (x > 0) {

        if (x%2 == 0) a += 1;

        else b += x%10;

        x = x / 10;

    }

    cout << a << endl << b << endl;

    return 0;

}

 

21.

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

 

 

Бэйсик Паскаль

DIM A, B, T, M, R AS INTEGER

A = -20: B = 20

M = A: R = F(A)

FOR T = A TO B

    IF F(T) < R THEN

        M = T

        R = F(T)

    END IF

NEXT T

PRINT R

 

FUNCTION F(x)

    F := 4*(x-5)*(x+3)

END FUNCTION

var a,b,t,M,R :integer;

    Function F(x: integer):integer;

    begin

        F := 4*(x-5)*(x+3);

    end;

BEGIN

    a := -20; b := 20;

    M := a; R := F(a);

    for t := a to b do begin

        if (F(t)< R) then begin

            M := t;

            R := F(t);

        end;

    end;

write(R);

END.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int F(int x)

{

    return 4*(x-5)*(x+3)

}

int main()

{

    int a, b, t, M, R;

    a = -20; b = 20;

    M = a; R = F(a);

    for (t=a; t<=b; t++){

        if (F(t) < R) {

            M = t; R = F(t);

        }

    }

    cout « R « endl;

}

алг

нач

цел a, b, t, R, M

a := -20; b := 20

M := a; R := F(a)

нц для t от a до b

если F(t) < R

то

M := t; R := F(t)

все

кц

вывод R

кон

алг цел F(цел x)

нач

знач := 4*(x-5)*(x+3)

кон

Python

def f(x):

    return 4*(x-5)*(x+3)

a = -20

b = 20

M = a

R = f(a)

for t in range(a, b+1):

    if (f(t) < R):

        M = t

        R = f(t);

print(R)

 

22.

У исполнителя Калькулятор две команды:

 

1. прибавь 1

2. прибавь 2.

 

Первая из них увеличивает число на экране на 1, вторая — на 2. Сколько различных чисел можно получить из числа 2 с помощью программы, которая содержит не более 4 команд?

23.

Сколько существует различных наборов значений логических переменных x1, x2, ... x8, y1, y2, ... y8, которые удовлетворяют всем перечисленным ниже условиям?

(x1→x2) /\ (y1→y2) /\ (y1→x1) = 1

(x2→x3) /\ (y2→y3) /\ (y2→x2) = 1

(x7→x8) /\ (y7→y8) /\ (y7→x7) = 1

(y8→x8) = 1

В ответе не нужно перечислять все различные наборы значений переменных x1, x2, ... x8, y1, y2, ... y8, при которых выполнена данная система равенств. В качестве ответа Вам нужно указать количество таких наборов.

24.

Факториалом натурального числа n (обозначается n!) называется произведение всех натуральных чисел от 1 до n. Например, 4! = 1 · 2 · 3 · 4 = 24.

Дано целое положительное число A. Необходимо найти минимальное натуральное K, для которого K! ≥ A.

Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.

Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

 

 

БейсикPython

DIM A, K, F AS INTEGER

INPUT A

K = 0

F = 1

WHILE F <= A

    K = K + 1

    F = F * K

WEND

PRINT K

END

a = int(input())

k = 0

f = 1

while f <= a:

    k += 1

    f *= k

print(k)

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

var a, k, f: integer;

begin

    read(a);

    k := 0;

    f := 1;

    while f <= a do begin

        k := k + 1;

        f := f * k

    end;

    writeln(k)

end.

алг

нач

    цел a, k, f

    ввод a

    k := 0

    f := 1

    нц пока f <= a

        k := k + 1

        f := f * k

    кц

    вывод k

кон

Си++

#include

using namespace std;

int main(){

    int a, k, f;

    cin >> a;

    k = 0;

    f = 1;

    while (f <= a) {

        ++k;

        f *= k;

    }

    cout << k;

    return 0;

}

 

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

1. Напишите, что выведет эта программа при вводе A = 6.

2. Назовите минимальное A, большее 10, при котором программа выведет неверный ответ.

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

Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

25.

Дан массив, содержащий 2018 положительных целых чисел, не превышающих 30 000. Необходимо определить, сколько в этом массиве элементов, десятичная и восьмеричная запись которых содержит одинаковое количество цифр.

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

 

 

БейсикPython

CONST N=2018

DIM A(N) AS INTEGER

DIM B, I, K, L, M AS INTEGER

FOR I = 1 TO N

    INPUT A(I)

NEXT I

END

# кроме уже указанных

# допускается использование

# целочисленных переменных

# k, b, l, m

a = []

N = 2018

for i in range(0, N):

    a.append(int(input()))

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

const

    N=2018;

var

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

    b, i, k, l, m: integer;

begin

    for i:=1 to N do

        readln(a[i]);

    …

end.

алг

нач

    цел N=2018

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

    цел b, i, k, l, m

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

        ввод a[i]

    кц

    …

кон

Си++

#include <iostream>

using namespace std;

const int N=2018;

int main(){

    int a[N];

    int b, i, k, l, m;

    for (i=0; i        cin >> a[i];

    …

    return 0;

}

 

 

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

26.

Два игрока, Паша и Вова, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Паша. За один ход игрок может добавить в кучу 1 камень или 10 камней. Например, имея кучу из 7 камней, за один ход можно получить кучу из 8 или 17 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 31. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 31 или больше камней.

В начальный момент в куче было S камней, 1 ≤ S ≤ 30.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.

Выполните следующие задания. Во всех случаях обосновывайте свой ответ.

1. а) Укажите все такие значения числа S, при которых Паша может выиграть в один ход. Обоснуйте, что найдены все нужные значения S, и укажите выигрывающие ходы.

б) Укажите такое значение S. при котором Паша не может выиграть за один ход, но при любом ходе Паши Вова может выиграть своим первым ходом. Опишите выигрышную стратегию Вовы.

2. Укажите два значения S, при которых у Паши есть выигрышная стратегия, причём Паша не может выиграть за один ход, но может выиграть своим вторым ходом независимо от того, как будет ходить Вова. Для указанных значений S опишите выигрышную стратегию Паши.

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

27.

На вход программы поступает последовательность из N целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре не важен). Необходимо определить количество пар, для которых произведение элементов делится на 26.

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

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

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

4

2

6

13

39

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

4

Пояснение. Из четырёх заданных чисел можно составить 6 попарных произведений: 2·6, 2·13, 2·39, 6·13, 6·39, 13·39 (результаты: 12, 26, 78, 78, 234, 507). Из них на 26 делятся 4 произведения (2·13=26; 2·39=78; 6·13=78; 6·39=234).

Требуется написать эффективную по времени и по памяти программу для решения описанной задачи.

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

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

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

Максимальная оценка за правильную программу, эффективную только по времени – 3 балла.

Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, – 2 балла.

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

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