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

Вариант «Демонстрационная версия ЕГЭ—2017 по информатике» (ДЕМО-2017)

Список тем

1, Д1, 2, 3, 4, 5, 6, 7, Д7, 8, 11, 12, Д12, 13, 14, 16, Д17, Д19, Д21, 22, 23, Д23, Д24 C1, Д25 C2, Д26 C3, Д27 C4

Задания

Задание 1 (тема 1, №11339)

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

На рисунке справа схема дорог Н-ского района изображена в виде графа; в таблице слева содержатся сведения о протяжённости каждой из этих дорог (в километрах).

 

 

 

П1П2П3П4П5П6
П11085
П2102012
П34
П420415
П5812157
П657

 

 

Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова длина дороги из пункта Б в пункт В. В ответе запишите целое число — так, как оно указано в таблице.

Задание Д1 (тема Д1, №11337)

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

Сколько существует натуральных чисел x, для которых выполнено неравенство 110111002 < x < DF16?

В ответе укажите только количество чисел, сами числа писать не нужно.

Задание 2 (тема 2, №11338)

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

Логическая функция F задаётся выражением x ∧ ¬y ∧ (¬z ∨ w). На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F истинна. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных w, x, y, z.

 

Перем. 1Перем. 2Перем. 3Перем. 4Функция
????????????F
00101
00111
10111

 

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

 

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

 

Перем. 1Перем. 2Функция
??????F
001
101
111

 

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

Задание 3 (тема 3, №11340)

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

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

Пояснение: племянницей считается дочь брата или сестры.

 

Таблица 1
IDФамилия_И. О.Пол
1015Иваненко Н. А.Ж
1023Иваненко М. И.М
1033Будай В. С.Ж
1035Будай С. С.М
1043Коладзе Л. А.М
1073Будай М. А.Ж
2022Иваненко И. М.М
2024Иваненко М. М.М
2032Будай А. И.Ж
2042Коладзе А. С.Ж
2044Родэ О. С.М
2046Родэ М. О.М
2052Ауэрман А. М.Ж
.........

Таблица 2
ID_РодителяID_Ребенка
10151035
10232024
10232052
10351033
10352044
10732052
10732024
20221023
20222032
20321033
20322044
20422032
20421023
......

Задание 4 (тема 4, №11341)

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

Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г, Д, Е, решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для буквы А использовали кодовое слово 0; для буквы Б – кодовое слово 10. Какова наименьшая возможная сумма длин всех шести кодовых слов?

Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.

Задание 5 (тема 5, №11342)

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

Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам.

1. Складываются первая и вторая, а также вторая и третья цифры исходного числа.

2. Полученные два числа записываются друг за другом в порядке убывания (без разделителей).

Пример. Исходное число: 348. Суммы: 3 + 4 = 7; 4 + 8 = 12. Результат: 127.

Укажите наименьшее число, в результате обработки которого автомат выдаст число 1711.

Задание 6 (тема 6, №11344)

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

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

 

БейсикPython

DIM N, S AS INTEGER

N = 1

S = 0

WHILE N <= 150

    S = S + 30

    N = N * 5

WEND

PRINT S

n = 1

s = 0

while n <= 150:

    s = s + 30

    n = n * 5

print(s)

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

var n, s: integer;

begin

    n := 1;

    s := 0;

    while n <= 150 do

    begin

        s := s + 30;

        n := n * 5

    end;

    write(s)

end.

алг

нач

    цел n, s

    n := 1

    s := 0

    нц пока n <= 150

        s := s + 30

        n := n * 5

    кц

    вывод s

кон

Си++

#include <iostream>

using namespace std;

int main()

{

    int n, s;

    n = 1;

    s = 0;

    while (n <= 150)

    {

        s = s + 30;

        n = n * 5;

    }

    cout « s « endl;

    return 0;

}

 

Задание 7 (тема 7, №11345)

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

Для хранения произвольного растрового изображения размером 1024 × 1024 пикселей отведено 512 Кбайт памяти, при этом для каждого пикселя хранится двоичное число — код цвета этого пикселя. Для каждого пикселя для хранения кода выделено одинаковое количество бит. Сжатие данных не производится. Какое максимальное количество цветов можно использовать в изображении?

Задание Д7 (тема Д7, №11343)

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

Дан фрагмент электронной таблицы. Из ячейки A2 в ячейку B3 была скопирована формула. При копировании адреса ячеек в формуле автоматически изменились. Запишите в ответе числовое значение формулы в ячейке B3.

 

АBCDE
1404400807
2=C$2+D$33300706
320200505
4101100304

 

Примечание: знак $ обозначает абсолютную адресацию.

Задание 8 (тема 8, №11346)

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

Вася составляет 5-буквенные слова, в которых встречаются только буквы А, Б, В, Г, причём буква А появляется ровно 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася?

Задание 11 (тема 11, №11349)

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

При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 9 символов. Из соображений информационной безопасности каждый пароль должен содержать хотя бы 1 десятичную цифру, как прописные, так и строчные латинские буквы (в латинском алфавите 26 букв), а также не менее 1 символа из 6-символьного набора: «&», «#», «$», «*», «!», «@». В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт; это число одно и то же для всех пользователей.

Для хранения сведений о 20 пользователях потребовалось 500 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе? В ответе запишите только целое число – количество байт.

Примечание. В латинском алфавите 26 букв.

Задание 12 (тема 12, №11350)

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

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

А) заменить (v, w).

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды

заменить (111, 27)

преобразует строку 05111150 в строку 0527150.

Если в строке нет вхождений цепочки v, то выполнение команды

заменить (v, w) не меняет эту строку.

Б) нашлось (v).

 

Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Цикл

    ПОКА условие

        последовательность команд

    КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

    ЕСЛИ условие

        ТО команда1

        ИНАЧЕ команда2

    КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 69 идущих подряд цифр 8? В ответе запишите полученную строку.

НАЧАЛО

ПОКА нашлось (3333) ИЛИ нашлось (8888)

    ЕСЛИ нашлось (3333)

        ТО заменить (3333, 88)

        ИНАЧЕ заменить (8888, 33)

    КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Задание Д12 (тема Д12, №11348)

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

В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, — в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда — нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданным IP-адресу узла и маске.

Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.

Для узла с IP-адресом 119.83.208.27 адрес сети равен 119.83.192.0. Каково наименьшее возможное количество единиц в разрядах маски?

Задание 13 (тема 13, №11351)

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

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

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

Задание 14 (тема 14, №11352)

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

Значение арифметического выражения: 918 + 354 – 9 — записали в системе счисления с основанием 3. Сколько цифр «2» содержится в этой записи?

Задание 16 (тема 16, №11347)

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

Ниже на пяти языках программирования записан рекурсивный алгоритм F.

 

БейсикPython

DECLARE SUB F(n)

SUB F(n)

    IF n > 2 THEN

        PRINT n

        F(n - 3)

        F(n – 4)

    END IF

END SUB

def F(n):

    if n > 2:

        print(n)

        F(n - 3)

        F(n – 4)

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

procedure F(n: integer);

begin

    if n > 2 then begin

        writeln(n);

        F(n - 3);

        F(n – 4)

    end

end;

алг F(цел n)

нач

    если n > 2 то

        вывод n, нс

        F(n - 3)

        F(n – 4)

    все

кон

Си

void F(int n) {

    if (n > 2) {

        cout << n;

        F(n - 3);

        F(n – 4);

    }

}

 

 

Чему равна сумма напечатанных на экране чисел при выполнении вызова F(10)?

Задание Д17 (тема Д17, №11353)

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

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

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

 

ЗапросНайдено страниц
(в сотнях тысяч)
Бабочка22
Гусеница40
Трактор28
Бабочка & Гусеница20
Трактор & Гусеница16
Трактор & Бабочка0

 

Какое количество страниц (в сотнях тысяч) будет найдено по запросу Трактор | Бабочка | Гусеница?

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

Задание Д19 (тема Д19, №11355)

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

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 1, 2, 5, 8, 9, 3, 4, 0, 7, 6 соответственно, т. е. A[0] = 1, A[1] = 2 и т. д.

Определите значение переменной j после выполнения следующего фрагмента программы (записанного ниже на пяти языках программирования).

 

БейсикPython

j = 5

WHILE A(j) < A(j-1)

    t = A(j)

    A(j) = A(j-1)

    A(j-1) = t

    j = j - 1

WEND

j = 5

while A[j] < A[j-1]:

    A[j],A[j-1]=A[j-1],A[j]

    j -= 1

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

j := 5;

while A[j] < A[j-1] do

    begin

        t := A[j];

        A[j] := A[j-1];

        A[j-1] := t;

        j := j - 1;

    end;

j := 5

нц пока A[j] < A[j-1]

    t := A[j]

    A[j] := A[j-1]

    A[j-1] := t

    j := j - 1

кц

Си++

j = 5;

while (A[j] < A[j-1])

    {

        t = A[j];

        A[j] = A[j-1];

        A[j-1] = t;

        j -= 1;

    }

 

Задание Д21 (тема Д21, №11357)

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

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

 

БейсикPython

DIM A, B, N, t AS INTEGER

A = -100: B = 100

N = 0

FOR t = A TO B

    IF F(t) <= 0 THEN

        N = N + 1

    END IF

NEXT t

PRINT N

 

FUNCTION F (x)

    F = (x - 16)*(x + 25)

END FUNCTION

def f(x):

    return (x - 16)*(x + 25)

 

a = -100

b = 100

n = 0

 

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

    if f(t) <= 0:

        n = n + 1

print(n)

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

var a, b, N, t: integer;

Function F(x: integer):integer;

    begin

        F := (x - 16)*(x + 25)

    end;

begin

    a := -100; b := 100;

    N := 0;

    for t := a to b do begin

        if (F(t) <= 0) then

            N := N + 1

    end;

    write(N)

end.

алг

нач

    цел a, b, N, t

    a := -100; b := 100

    N := 0

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

        если F(t) <= 0

            то

                N := N + 1

        все

    кц

    вывод N

кон

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

нач

    знач := (x - 16)*(x + 25)

кон

Си++

#include <iostream>

using namespace std;

int F(int x) {

    return (x - 16)*(x + 25);

}

 

int main() {

    int a, b, N, t;

    a = -100; b = 100;

    N = 0;

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

        if (F(t) <= 0) {

            N++;

        }

    }

    cout « N « endl;

}

 

Задание 22 (тема 22, №11356)

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

Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное число x, этот алгоритм печатает число R. Укажите такое число x, при вводе которого алгоритм печатает двузначное число, сумма цифр которого равна 16. Если таких чисел x несколько, укажите наименьшее из них.

 

БейсикPython

DIM X,D,R AS LONG

INPUT X

R = 0

WHILE X>0

    D = X MOD 10

    R = 10*R + D

    X = X \ 10

WEND

PRINT R

x = int(input())

R = 0

while x>0:

    d = x % 10

    R = 10*R + d

    x = x // 10

print(R)

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

var

    x,d,R: longint;

begin

    readln(x);

    R := 0;

    while x>0 do

        begin

            d := x mod 10;

            R := 10*R + d;

            x := x div 10

        end;

    writeln(R)

end.

алг

нач

    цел x, d, R

    ввод x

    R := 0

    нц пока x>0

        d := mod(x, 10)

        R := 10*R + d

        x := div(x, 10)

    кц

    вывод R

кон

Си++

#include <iostream>

using namespace std;

int main()

{

    long x,d,R;

    cin >> x;

    R = 0;

    while (x>0)

        {

            d = x % 10;

            R = 10*R + d;

            x = x / 10;

        }

    cout << R << endl;

    return 0;

}

 

Задание 23 (тема 23, №11358)

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

Исполнитель А16 преобразует число, записанное на экране.

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

1. Прибавить 1

2. Прибавить 2

3. Умножить на 2

Первая из них увеличивает число на экране на 1, вторая увеличивает его на 2, третья умножает его на 2.

Программа для исполнителя А16 – это последовательность команд.

Сколько существует таких программ, которые исходное число 3 преобразуют в число 12 и при этом траектория вычислений программы содержит число 10?

Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 132 при исходном числе 7 траектория будет состоять из чисел 8, 16, 18.

Задание Д23 (тема Д23, №11359)

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

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

 

(x1 → (x2y1)) ∧ (y1y2) = 1

(x2 → (x3y2)) ∧ (y2y3) = 1

...

(x5 → (x6y5)) ∧ (y5y6) = 1

x6y6 = 1

 

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

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

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

Дано целое положительное число N, не превосходящее 1000. Необходимо определить, является ли это число степенью числа 3. То есть требуется определить, существует ли такое целое число K, что 3K = N, и вывести это число либо сообщение, что такого числа не существует.

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

 

БейсикPython

DIM N, K AS INTEGER

INPUT N

K = 0

WHILE K MOD 3 = 0

    K = K + 1

    N = N \ 3

WEND

IF N > 0 THEN

    PRINT K

ELSE

    PRINT "Не существует"

END IF

END

n = int(input())

k = 0

while k%3 == 0:

    k = k + 1

    n = n // 3

if n > 0:

    print(k)

else:

    print("Не существует")

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

var n, k: integer;

begin

    read(n);

    k := 0;

    while k mod 3 = 0 do begin

        k := k + 1;

        n := n div 3;

    end;

    if n > 0 then

        writeln(k)

    else

        writeln('Не существует')

end.

алг

нач

    цел n, k

    ввод n

    k := 0

    нц пока mod(k, 3)=0

        k := k + 1

        n := div(n,3)

    кц

    если n > 0

        то вывод k

        иначе вывод "Не существует"

    все

кон

Си++

#include <iostream>

using namespace std;

int main(){

    int n, k;

    cin >> n;

    k = 0;

    while (k%3 == 0) {

        k = k + 1;

        n = n / 3;

    }

    if (n > 0)

        cout « k « endl;

    else

        cout << "Не существует";

    return 0;

}

 

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

1. Напишите, что выведет эта программа при вводе числа 9.

2. Приведите пример числа, при вводе которого приведённая программа напечатает то, что требуется.

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

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

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

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

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

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

Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых десятичная запись хотя бы одного числа оканчивается на 2. В данной задаче под парой подразумевается два подряд идущих элемента массива.

Например, для массива из пяти элементов: 16 3 142 55 22 – ответ: 3.

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

 

БейсикPython

CONST N = 40

DIM A (1 TO N) AS INTEGER

DIM I, J, K, AS INTEGER

 

FOR I = 1 TO N

    INPUT A(I)

NEXT I

...

END

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

#две целочисленные переменные j и k

a = []

n = 40

for i in range(0, n):

a.append(int(input()))

...

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

const

    N = 40;

var

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

    i, j, k: integer;

begin

    for i := 1 to N do

        readln(a[i]);

    ...

end.

алг

нач

    цел N = 40

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

    цел i, j, k

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

        ввод a[i]

    кц

    ...

 

кон

Си++Естественный язык

#include <iostream>

using namespace std;

#define N 40

int main() {

    int a[N];

    int i, j, k;

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

        cin >> a[i];

    ...

    return 0;

}

Объявляем массив A из 40 элементов.

Объявляем целочисленные переменные I, J, K.

В цикле от 1 до 40 вводим элементы массива A с 1-го по 40-й.

 

 

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

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

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

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

Игра завершается в тот момент, когда количество камней в куче становится не менее 20. Если при этом в куче оказалось не более 30 камней, то победителем считается игрок, сделавший последний ход. В противном случае победителем становится его противник. Например, если в куче было 17 камней и Паша удвоит количество камней в куче, то игра закончится, и победителем будет Валя. В начальный момент в куче было S камней, 1 ≤ S ≤ 19.

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

 

Выполните следующие задания.

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

б) У кого из игроков есть выигрышная стратегия при S = 18, 17, 16? Опишите выигрышные стратегии для этих случаев.

2. У кого из игроков есть выигрышная стратегия при S = 9, 8? Опишите соответствующие выигрышные стратегии.

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

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

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

Вам предлагается два задания с похожими условиями: задание А и задание Б. Вы можете решать оба задания или одно из них по своему выбору. Задание Б более сложное, его решение оценивается выше. Итоговая оценка выставляется как максимальная из оценок за задания А и Б.

 

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

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

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

 

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

Напишите программу для решения этой задачи.

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

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

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

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

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

 

Как в варианте А, так и в варианте Б программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи (или 0, если такую сумму получить нельзя).

 

НАПОМИНАЕМ! Не забудьте указать, к какому заданию относится каждая из представленных Вами программ.

 

Перед текстом программы кратко опишите Ваш алгоритм решения, укажите использованный язык программирования и его версию (например, Free Pascal 2.6.4).

 

Входные данные

Для варианта А на вход программе подаётся шесть строк, каждая из которых содержит два натуральных числа, не превышающих 10 000.

Пример входных данных для варианта А:

1 3

5 12

6 9

5 4

3 3

1 1

 

Для варианта Б на вход программе в первой строке подаётся количество пар N (1 ≤ N ≤ 100 000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

Пример входных данных для варианта Б:

6

1 3

5 12

6 9

5 4

3 3

1 1

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