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

Вариант «ЕГЭ — 2019. Досрочная волна. Вариант 2» (ДОСР-2019)

Список тем

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

Задания

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

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

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

 

П1П2П3П4П5П6
П112 61513
П211
П3129
П4675
П51597
П613115

 

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

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

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

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

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

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

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

Миша заполнял таблицу истинности функции (xy) ∨ (yz) ∨ w, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

 

 

 

(xy) ∨ (yz) ∨ w
1000
010
0110

 

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

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

Пример. Функция задана выражением ¬xy, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.

 

¬xy
010

 

В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать yx.

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

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

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

 

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

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

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

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

По каналу связи передаются шифрованные сообщения, содержащие только десять букв: А, Б, Е, И, К, Л, Р, С, Т, У; для передачи используется неравномерный двоичный код. Для девяти букв используются кодовые слова.

 

БукваКодовое слово
А00
Б1000
Е010
И011
К1011

БукваКодовое слово
Л1001
Р
С1010
Т1101
У111

 

Укажите кратчайшее кодовое слово для буквы Р, при котором код будет удовлетворять условию Фано. Если таких кодов несколько, укажите код с наименьшим числовым значением.

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

 

 

БейсикPython

DIM N, S AS INTEGER

S = 230

N = 0

WHILE S > 0

    S = S – 15

    N = N + 2

WEND

PRINT N

s = 230

n = 0

while s > 0:

    s = s − 15

    n = n + 2

print(n)

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

var n, s: integer;

begin

    s:=230;

    n:=0;

    while s > 0 do begin

        s := s – 15;

        n := n + 2;

    end;

    write(n);

end.

алг

нач

    цел s, n

    s := 230

    n := 0

    нц пока s > 0

        s := s − 15

        n := n + 2

    кц

    вывод n

кон

Си++

#include <iostream>

using namespace std;

 

int main() {

    int s = 230, n = 0;

    while(s > 0) { s = s - 15; n = n + 2; }

    cout << n << endl;

    return 0;

}

 

 

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

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

Какой минимальный объём памяти (в Кбайт) нужно зарезервировать, чтобы можно было сохранить любое растровое изображение размером 640×320 пикселей при условии, что в изображении могут использоваться 64 различных цвета? Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Искомый объём не учитывает размера заголовка файла. В ответе запишите только целое число, единицу измерения писать не нужно.

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

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

Дан фрагмент электронной таблицы. Из ячейки D2 в ячейку E1 была скопирована формула. При копировании адреса ячеек в формуле автоматически изменились. Каким стало числовое значение формулы в ячейке E1?

 

ABCDE
11101001000
2220200=B2+$C$320000
3330300300030000
4440400400040000

 

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

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

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

Вася составляет 6-буквенные слова из букв К, О, Т. Причем буква К используется в каждом слове ровно 1 раз. Остальные буквы могут быть использованы любое количество раз, в том числе совсем отсутствовать. Сколько слов может составить Вася? Словом называется любая буквенная комбинация, не обязательно осмысленное слово русского языка.

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

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

При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 10 символов. В качестве символов используют прописные буквы латинского алфавита, т.е. 26 различных символов. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего отведено 15 байт на одного пользователя.

Определите объём памяти (в байтах), необходимый для хранения сведений о 50 пользователях. В ответе запишите только целое число – количество байт.

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

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

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду сместиться на (a, b), где a, b – целые числа. Эта команда перемещает Чертёжника из точки с координатами (x; y) в точку с координатами (x + a; y + b). Например, если Чертёжник находится в точке с координатами (4; 2), то команда сместиться на (2, −3) переместит Чертёжника в точку (6; −1).

 

Цикл

ПОВТОРИ число РАЗ

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

КОНЕЦ ПОВТОРИ

означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).

 

Чертёжнику был дан для исполнения следующий алгоритм (число повторений и величины смещения в первой из повторяемых команд неизвестны):

 

НАЧАЛО

сместиться на (–2, 1)

ПОВТОРИ … РАЗ

    сместиться на (…, …)

    сместиться на (5, −7)

КОНЕЦ ПОВТОРИ

сместиться на (−34, −28)

КОНЕЦ

 

В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшее число повторений могло быть указано в конструкции «ПОВТОРИ … РАЗ»?

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

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

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

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

 

Для узла с IP-адресом 111.81.176.27 адрес сети равен 111.81.160.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.

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

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

На рисунке — схема дорог, связывающих пункты А, Б, В, Г, Д, Е, К, Л, М.

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

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

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

Сколько единиц содержится в двоичной записи значения выражения: 416 + 236 − 8?

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

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

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

 

БейсикPython

SUB F(N)

    PRINT N

    IF N >= 2 THEN

        F(n – 2)

        F(n – 1)

        F(n – 2)

    END IF

END SUB

 

def F(n):

    print(n)

    if n >= 2:

        F(n – 2)

        F(n – 1)

        F(n – 2)

 

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

procedure F(n: integer);

begin

    write(n);

    if n >= 2 then begin

        F(n – 2);

        F(n – 1);

        F(n – 2)

    end

end;

 

алг F(цел n)

нач

    вывод n

    если n >= 2 то

        F(n – 2)

        F(n – 1)

        F(n – 2)

    все

кон

 

С++

void F(int n)

{

    std::cout << n;

    if (n >= 2) {

        F(n – 2);

        F(n – 1);

        F(n – 2);

    }

}

 

 

Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова F(3). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

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

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

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

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

 

ЗапросНайдено страниц

(в сотнях тысяч)

Горло35
Корабль30
Нос40
Горло | Корабль| Нос70
Горло & Нос10
Горло & Корабль0

 

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

 

Корабль & Нос?

 

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

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

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

В программе используется одномерный целочисленный массив A с индексами от 0 до 11. Значения элементов равны 5, 8, 7, 11, 10, 12, 9, 6, 4, 13, 3, 15 соответственно, т.е. A[0] = 5, A[1] = 8 и т.д. Определите значение переменной s после выполнения следующего фрагмента этой программы (записанного ниже на пяти языках программирования).

 

 

БейсикPython

N = 0

S = 0

FOR I = 1 TO 11

    IF A(I) > A(N) THEN

        S = S + 1

        T = A(I)

        A(I) = A(N)

        A(N) = t

    END IF

NEXT I

 

n = 0

s = 0

for i in range(1, 12):

    if A[i] > A[n]:

        s = s + 1

        t = A[i]

        A[i] = A[n]

        A[n] = t

 

 

 

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

s:= 0;

n:= 0;

for i:=1 to 11 do

    if A[i] > A[n] then begin

        s := s + 1;

        t := A[i];

        A[i] := A[n];

        A[n] := t;

    end;

 

s := 0

n := 0

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

    если A[i] > A[n] то

        s := s + 1

        t := A[i]

        A[i] := A[n]

        A[n] := t;

    все

кц

С++

n = 0;

s = 0;

for (i = 1; i < 12; i++) {

    if (A[i] > A[n]) {

        s++;

        t = A[i];

        A[i] = A[n];

        A[n] = t;

    }

}

 

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

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

Напишите в ответе число, равное количеству различных значений входной переменной k, при которых приведённая ниже программа выводит тот же ответ, что и при входном значении k = 12. Значение k = 12 также включается в подсчёт различных значений k.

 

 

БейсикPython

DIM K, I AS INTEGER

INPUT K

I = 1

WHILE F(I) < K

    I = I + 1

WEND

IF F(I)−K<=K−F(I−1) THEN

    PRINT I

ELSE

    PRINT I – 1

END IF

 

FUNCTION F(N)

    F = N*N*N

END FUNCTION

def f(n):

    return n*n*n

 

k = int(input())

i = 1

while f(i) < k:

    i = i + 1

if f(i)–k <= k–f(i−1):

    print(i)

else:

    print(i−1)

 

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

var k, i : longint;

function f(n: longint) : longint;

begin

    f := n*n*n;

end;

 

begin

    readln(k);

    i := 1;

    while f(i) < k do

        i:= i+1;

    if f(i)−k <= k−f(i−1) then

        writeln(i)

    else writeln(i−1);

end.

 

алг

нач

    цел k, i

    ввод k

    i := 1

    нц пока f(i) < k

        i := i + 1

    кц

    если f(i)−k <= k−f(i−1)

    то вывод i

    иначе вывод i−1

    все

кон

 

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

нач

        знач := n * n * n

кон

 

С++

#include <iostream>

using namespace std;

 

int F(int n){

    return n*n*n;

}

int main(){

int i, k;

    cin >> k;

    i = 1;

    while(F(i) < k) i=i+1;

    if(F(i)−k<=k−F(i−1))

        cout << i;

    else

        cout << (i − 1);

    return 0;

}

 

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

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

Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 5, а потом 6.

 

 

БейсикPython

DIM X, L, M AS INTEGER

INPUT X

L = 0

M = 0

WHILE X > 0

    M = M + 1

    IF X MOD 2 <> 0 THEN

        L = L + 1

    END IF

    X = X \ 2

WEND

PRINT L

PRINT M

 

x = int(input())

L = 0

M = 0

while x > 0:

    M = M + 1

    if x % 2 != 0:

        L = L + 1

    x = x // 2

print(L)

print(M)

 

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

var x, L, M: integer;;

begin

    readln(x);

    L := 0;

    M := 0;

    while x > 0 do

    begin

        M := M + 1;

        if x mod 2 <> 0

            then L := L + 1;

        x := x div 2;

    end;

    writeln(L);

    writeln(M);

end.

 

алг

нач

    цел x, L, M

    ввод x

    L := 0

    M := 0

    нц пока x > 0

        M := M + 1

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

            L := L + 1

        все

        x := div(x,2)

    кц

    вывод L

    вывод M

кон

 

С++

#include <iostream>

using namespace std;

int main()

{

    int x, L, M;

    cin >> x;

    L = 0;

    M = 0;

    while (x > 0) {

        M = M + 1;

        if(x % 2 != 0){

            L = L + 1;

        }

        x = x / 2;

    }

    cout << L << endl << M << endl;

    return 0;

}

 

 

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

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

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

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

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

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

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

Сколько существует программ, для которых при исходном числе 2 результатом является число 29 и при этом траектория вычислений содержит число 14?

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

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

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

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

 

(x1y1) ≡ (¬x2 ∨ ¬y2)

(x2y2) ≡ (¬x3 ∨ ¬y3)

...

(x7y7) ≡ (¬x8 ∨ ¬y8)

 

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

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

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

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

 

Напоминание: 0 делится на любое натуральное число.

 

 

БейсикPython

CONST n=4

count = 0

sum = 0

FOR I = 1 TO n

    INPUT x

    IF x mod 10 = 0 THEN

        count = count + 1

        sum = x

    END IF

NEXT I

IF sum > 0 THEN

    PRINT count

    PRINT sum

ELSE

    PRINT "NO"

END IF

n = 4

count = 0

sum = 0

for i in range(1, n+1):

    x = int(input())

    if x % 10 == 0:

        count = count + 1

        sum = x

if sum > 0:

    print(count)

    print(sum)

else:

    print("NO")

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

const n = 4;

var i, x, sum, count: integer;

begin

    count := 0;

    sum := 0;

    for i := 1 to n do begin

        read(x);

        if x mod 10 = 0 then

        begin

            count := count+1;

            sum := x;

        end

    end;

if sum > 0 then begin

    writeln(count);

    writeln(sum);

end

else

    writeln('NO')

end.

алг

нач

цел n = 4

    цел i, x, sum, count

    count := 0

    sum := 0

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

        ввод x

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

            count := count + 1

            sum := x

        все

    кц

    если sum > 0 то

        вывод count

        вывод sum

    иначе вывод "NO"

кон

С++

#include <iostream>

#define n 4

using namespace std;

int main(){

    int i, x, sum, count;

    count = 0;

    sum = 0;

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

        cin >> x;

        if(x % 10 == 0){

            count = count + 1;

            sum = x;

        }

    }

    if(sum > 0)

    {

        cout << count << endl;

        cout << sum << endl;

    }

    else

        cout << "NO";

    return 0;

}

 

 

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

1. Напишите, что выведет эта программа при вводе последовательности: 20, 25, 40, 45.

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

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

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

 

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

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

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

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

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

 

Например, для исходного массива из шести элементов:

4

1104

74

1005

6

1006

программа должна вывести следующий массив:

4

2

74

2

6

1006

 

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

 

 

 

БейсикPython

CONST N AS INTEGER = 30

DIM A (1 TO N) AS LONG

DIM I AS LONG,

    J AS LONG,

    K AS LONG

FOR I = 1 TO N

    INPUT A(I)

NEXT I

END

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

# использовать две

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

a = []

n = 30

for i in range(0, n):

    a.append(int(input()))

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

const

    N=30;

var

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

    i, j, k: longint;

begin

    for i:=1 to N do

        readln(a[i]);

    …

end.

алг

нач

    цел N=30

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

    цел i, j, k

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

        ввод a[i]

    кц

    …

кон

С++

#include <iostream>

using namespace std;

const int N=30;

    int main(){

    int a[N];

    int i, j, k;

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

        cin >> a[i];

    …

    return 0;

}

 

 

 

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

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

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

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

Игра завершается в тот момент, когда количество камней в куче становится не менее 26.

Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, в которой будет 26 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 25.

Будем говорить, что игрок имеет выигрышную стратегию, если он может

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

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

 

Задание 1

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

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

 

Задание 2

Укажите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполнены два условия:

— Петя не может выиграть за один ход;

— Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Для каждого указанного значения S опишите выигрышную стратегию Пети.

 

Задание 3

Укажите значение S, при котором:

— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

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

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

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

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

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

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

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

В качестве результата программа должна напечатать одно число: количество пар, в которых произведение элементов кратно 10.

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

4

2

6

5

15

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

4

 

Пояснение. Из четырёх заданных чисел можно составить 6 попарных произведений: 2 · 6, 2 · 5, 2 · 15, 6 · 5, 6 · 15, 5 · 15 (результаты: 12, 10, 30, 30, 90, 75). Из них на 10 без остатка делятся 4 произведения (2 · 5 = 10; 2 · 15 = 30; 6 · 5 = 30; 6 · 15 = 90).

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

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

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

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

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

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

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

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