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

1.

Вычислите разность X-Y двоичных чисел, если

 

Y=1002

Х=10101002

 

Ответ запишите в двоичной системе.

2.

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

 

Перем. 1Перем. 2Перем. 3Функция
?????????F
0000
0011
0100
0111
1000
1010
1100
1110

 

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

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

 

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

 

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

3.

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

 

П1П2П3П4П5П6П7
П1572025
П2572242821
П322238
П42042733
П5823
П62579
П7218339

 

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

4.

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

 

Таблица 1
IDФамилия И.О.ПолГод рождения
127Грищенко А.В. М1936
148Грищенко Д.И. М1998
182 Грищенко Е.П. Ж1940
212Грищенко И.А. М1970
243 Грищенко Н.Н. Ж1976
254Клейн А.Б. М1981
314Клейн Е.А. Ж2009
412 Клейн М.А. Ж2011
543Панько О.А. Ж1948
544 Петров В.И. М1961
545 Петров О.В. М1991
750 Петрова А.Е. Ж1962
830 Седых А.Н. Ж1980
849Седых Н.Н. М1947

Таблица 2
ID РодителяID Ребенка
127 212
182212
212148
243148
254314
254412
543243
543830
544545
750545
830314
830412
849243
849830

5.

Для кодирования букв X, Е, Л, О, Д решили использовать двоичное представление чисел 0, 1, 2, 3 и 4 соответственно (с сохранением одного незначащего нуля в случае одноразрядного представления). Закодируйте последовательность букв ЛЕДОХОД таким способом и результат запишите шестнадцатеричным кодом.

6.

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

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

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

Пример. Исходное число: 7511. Суммы: 7 + 5 = 12; 1 + 1 = 2. Результат: 212. Сколько существует чисел, в результате обработки которых автомат выдаст число 616?

7.

Дан фрагмент электронной таблицы. Из ячейки D2 в одну из ячеек диапазона E1:E4 была скопирована формула. При копировании адреса ячеек в формуле автоматически изменились, и значение формулы стало равным 8. В какую ячейку была скопирована формула? В ответе укажите только одно число – номер строки, в которой расположена ячейка.

 

ABCDE
11234
2234= B$3 + $C2
33456
44567

 

Примечание.

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

8.

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

 

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

a = 20

b = 15

b = 3 * b - a

IF a > b THEN

c = 2 * a + b

ELSE

c = 2 * a - b

END IF

a := 20;

b := 15;

b := 3 * b - a;

if a > b then

c := 2 * a + b

else

c := 2 * a - b;

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

a = 20;

b = 15;

b = 3 * b - a;

if (a > b)

c = 2 * a + b;

else

c = 2 * a - b;

a := 20

b := 15

b := 3 * b - a

если a > b

то c := 2 * a + b

иначе c := 2 * a - b

все

Python

a = 20

b = 15

b = 3 * b - a

if a > b:

    c = 2 * a + b

else:

    c = 2 * a - b

 

9.

Автоматическая фотокамера производит растровые изображения размером 800 х 600 пикселей. При этом объём файла с изображением не может превышать 400 Кбайт, упаковка данных не производится. Какое максимальное количество цветов можно использовать в палитре?

10.

Левий составляет 5-буквенные коды из букв Л, Е, В, И, Й. Каждую букву нужно использовать ровно 1 раз, при этом код не может начинаться с буквы Й и не может содержать сочетания ЕИ. Сколько различных кодов может составить Левий?

11.

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

 

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

SUB F(n)

  IF n > 0 THEN

    F(n - 4)

    F(n \ 3)

    PRINT n

  END IF

END SUB

procedure F(n: integer);

begin

  if n > 0 then

  begin

    F(n - 4);

    F(n div 3);

    writeln(n)

  end

end;

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

void F(int n)

{

if (n > 0)

  {

    F(n - 4);

    F(n / 3);

    cout << n << endl;

  }

}

алг F(цел n)

нач

  если n > 0 то

    F(n - 4)

    F(div(n, 3))

    вывод n, нс

  все

кон

Python

def F(n):

    if n > 0:

        F(n - 4)

        F(n // 3)

        print(n)

 

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

12.

Для узла с IP-адресом 203.155.196.98 адрес сети равен 203.155.192.0. Найдите наибольшее возможное количество единиц в двоичной записи маски подсети.

13.

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

14.

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

 

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

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

заменить (555, 63)

преобразует строку 12555550 в строку 1263550.

Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

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

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

  Цикл

  ПОКА условие

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

  КОНЕЦ ПОКА

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

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

  ЕСЛИ условие

      ТО команда1

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

  КОНЕЦ ЕСЛИ

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

 

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

НАЧАЛО

ПОКА нашлось (999) ИЛИ нашлось (888)

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

    ТО заменить (888, 9)

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

  КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

15.

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

 

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

16.

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

17.

В таблице приведены запросы и количество страниц, которые нашел поисковый сервер по этим запросам в некотором сегменте Интернета:

 

ЗапросКоличество страниц
(тыс.)
торты | пироги12000
торты & пироги6500
пироги7700

 

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

18.

Элементами множеств А, P, Q являются натуральные числа, причём P = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}, Q = {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}.

Известно, что выражение

((x A) → (x P)) ∨ (¬(x Q) → ¬(x A))

истинно (т. е. принимает значение 1) при любом значении переменной х.

Определите наибольшее возможное количество элементов в множестве A.

19.

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 5, 28, 8, 14, 9, 23, 6, 18, 51, 99 соответственно, то есть A[0] = 5, A[1] = 28 и т. д. Определите значение переменной t после выполнения следующего фрагмента программы, записанного ниже на разных языках программирования.

 

БейсикPython

i = 0: j = 9

WHILE A(i) < 10

    i = i + 1

WEND

WHILE A(j) > 10

    j = j - 1

WEND

t = A(i) - A(j)

i = 0

j = 9

while A[i] < 10 :

     i += 1

while A[j] > 10 :

     j -= 1

t = A[i] - A[j]

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

i = 0; j = 9;

while A[i] < 10 do

  i := i + 1;

while A[j] > 10 do

  j := j - 1;

t := A[i] - A[j];

i := 0

j := 9

нц пока A[i] < 10

   i := i + 1

кц

нц пока A[j] > 10

  j :=j - 1

кц

t := A[i] - A[j]

Си++

i = 0;

j = 9;

while (A[i] < 10) {

  i += 1;

}

while (A[j] > 10) {

  j -= 1;

}

t = A[i] - A[j];

 

20.

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

 

Бейсик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;

}

 

21.

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

 

БейсикPython

DIM K, I AS LONG

INPUT K

I = 1

WHILE F(I) < G(I)+K

    I = I + 1

WEND

  PRINT I

FUNCTION F(N)

  F = (N+1) * (N+1)

END FUNCTION

FUNCTION G(N)

    G = N * N

END FUNCTION

def f(n):

    return (n+1)*(n+1)

def g(n):

    return n*n

i = 1

k = int(input())

while f(i) < g(i) + k:

    i+=1

print (i)

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

var

    k, i : longint;

 

function f(n: longint) : longint;

begin

    f := (n+1) * (n+1);

end;

function g(n: longint) : longint;

begin

    g:= n * n;

end;

begin

    readln(k);

    i := 1;

     while f(i) < g(i) + k do

        i := i+1;

    writeln(i)

end.

алг

нач

    цел i, k

    ввод k

    i := 1

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

        i := i + 1

    кц

    вывод i

    все

кон

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

нач

    знач := (n+1) * (n+1)

кон

алг цел g(цел n)

нач

    знач := n * n

кон

Си++

#include <iostream>

using namespace std;

long f(long n) {

    return (n+1) * (n+1);

}

long g(long n) {

    return n * n ;

}

 

int main()

{

    long k, i;

    cin >> k;

    i = 1;

    while (f(i) < g(i)+ k) {

        i++;

    }

        cout << i << endl;

 

22.

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

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

        1. Прибавь 1

        2. Прибавь 3

        3. Прибавь предыдущее

Первая команда увеличивает число на экране на 1, вторая увеличивает это число на 3, третья прибавляет к числу на экране число, меньшее на 1 (к числу 3 прибавляется 2, к числу 11 прибавляется 10 и т. д.). Программа для исполнителя А22 – это последовательность команд.

Сколько существует программ, которые число 2 преобразуют в число 10?

23.

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

 

(x1 \/ ¬x2) → (x3 \/ ¬x4) = 1

(x3 \/ ¬x4) → (x5 \/ ¬x6) = 1

(x5 \/ ¬x6) → (x7 \/ ¬x8) = 1

 

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

24.

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

 

БейсикPython

COUNT = 0

MAXIMUM = 1000

FOR I = 1 TO 4

    INPUT X

    IF X MOD 3 <> 0 THEN

        COUNT = COUNT + 1

        IF X > MAXIMUM THEN

            MAXIMUM = I

        END IF

    END IF

NEXT I

IF COUNT > THEN

    PRINT COUNT

    PRINT MAXIMUM

ELSE

    PRINT “NO”

END IF

count = 0

maximum = 1000

for i in range(4):

    x = int(input())

    if x % 3 != 0:

        count = count + 1

        if x > maximum:

            maximum = i

if count > 0:

    print(count)

    print(maximum)

else:

    print("NO")

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

var i, x: integer;

var maximum, count: integer;

begin

     count := 0;

    maximum := 1000;

    for i:=1 to 4 do begin

         read( x );

         if x mod 3 <> 0 then begin

            count := count + 1;

             if x > maximum then

                 maximum := i;

            end;

         end;

     if count > 0 then begin

        writeln(count);

        writeln(maximum);

     end

    else

        writeln('NO');

end.

алг

нач

цел i, x

цел maximum, count

count := 0

maximum := 1000

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

ввод x

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

count := count + 1

если x > maximum то

maximum := i

все

все

кц

если count > 0 то

вывод count, нс

вывод maximum

иначе

вывод "NO"

все

кон

Си++

#include <iostream>

using namespace std;

 

int main(){

    int i, x, maximum;

    int count = 0;

    maximum = 1000;

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

        cin >> x;

        if ( x % 3 != 0 ) {

             count = count + 1;

             if ( x > maximum ) maximum = i;

            }

        }

     if ( count > 0 ) {

        cout << count << endl;

        cout << maximum;

    }

    else

        cout << "NO";

     return 0;

}

 

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

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

2. Приведите пример такой последовательности, содержащей число, кратное 3, при вводе которой программа выведет правильный ответ.

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

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

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

25.

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

Например, для массива из четырёх элементов, равных 80, 91, 162 и 250, в ответе должно получиться 162. В шестнадцатеричном виде эти числа записываются как 50, 5B, A2 и FA. Последний символ в десятичной и шестнадцатеричной записи совпадает у первого и третьего числа, большее из них — третье, то есть 162.

 

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

 

 

БейсикPython

CONST N=2018

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 = 2018

for i in range(0, N):

    a.append(int(input()))

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

const

    N=2018;

var

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

    i, m, k: integer;

begin

    for i:=1 to N do

        readln(a[i]);

    …

end.

алг

нач

    цел N=2018

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

    цел i, m, k

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

        ввод a[i]

    кц

    …

кон

Си++

#include <iostream>

using namespace std;

const int N = 2018;

int main(){

    int a[N];

    int i, m, k;

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

    …

    return 0;

}

 

 

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

26.

Два игрока, Петя и Ваня, играют в следующую игру. Перед ними лежат две кучки камней, в первой из которых 4, а во второй — 3 камня. У каждого игрока неограниченно много камней. Игроки ходят по очереди, первый ход делает Петя. Ход состоит в том, что игрок или утраивает число камней в какой-то куче, или добавляет 2 камня в какую-то кучу. Игра завершается в тот момент, когда количество камней в одной из куч становится не менее 20. Если в момент завершения игры общее число камней в двух кучах не менее 36, то выиграл Ваня, в противном случае — Петя. Кто выигрывает при безошибочной игре обоих игроков? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.

27.

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

После окончания эксперимента передаётся контрольное значение — наибольшее число R, удовлетворяющее следующим условиям:

1) R — произведение двух чисел, переданных в разные минуты;

2) R делится на 26.

Предполагается, что удовлетворяющее условиям контрольное значение существовало в момент передачи.

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

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

Программа должна напечатать отчёт по следующей форме.

 

Вычисленное контрольное значение: …

Контроль пройден (или Контроль не пройден)

 

Если удовлетворяющее условию контрольное значение определить невозможно, то выводится только фраза «Контроль не пройден». Перед текстом программы кратко опишите используемый Вами алгоритм решения.

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

 

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

5

52

12

39

55

23

2860

 

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

Вычисленное контрольное значение: 2860

Контроль пройден