№№ заданий Пояснения Ответы Ключ Добавить инструкцию Критерии
Источник Раздел кодификатора ФИПИ Справка Готово, можно копировать.
Вариант № 4433622

1.

Сколько нулей в двоичной записи десятичного числа 1020?

2.

Логическая функция F задаётся выражением (¬x ≡ z) → (y ≡ (w ∨ x)).

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

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

 

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

 

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

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

 

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

 

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

3.

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

 

П1П2П3П4П5П6П7
П1592227
П25924441021
П324259
П42244832
П51025
П627811
П72193211

 

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

4.

Во фрагменте базы данных представлены сведения о родственных отношениях. На основании приведённых данных определите идентификационный номер (ID) родной сестры Решко В.А.

 

Таблица 1
IDФамилия_И.О.Пол
2272Диковец А.Б.Ж
2228Диковец Б.Ф.М
2299Диковец И.Б.М
2378Диковец П.И.М
2356Диковец Т.И.Ж
2265Тесла А.И.Ж
2331Тесла А.П.М
2261Тесла Л.А.Ж
1217Тесла П.А.М
1202Ландау М.А.Ж
2227Решко Д.А.Ж
2240Решко В.А.Ж
2246Месяц К.Г.М
2387Лукина Р.Г.Ж
2293Фокс П.А.Ж
2322Друк Г.Р.Ж
.........

Таблица 2
ID_РодителяID_Ребенка
22272272
22272299
22282272
22282299
22722240
22721202
22721217
22992356
22992378
23222356
23222378
23312240
23311202
23311217
23872261
23872293
......

5.

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

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

6.

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

 

1. прибавь 3,

2. умножь на 4.

 

Выполняя первую из них, Калькулятор прибавляет к числу на экране 3, а выполняя вторую, умножает его на 4. Запишите порядок команд в программе, которая преобразует число 4 в число 37 и содержит не более 5 команд. Указывайте лишь номера команд. (Например, программа 21211 — это программа умножь на 4, прибавь 3, умножь на 4, прибавь 3, прибавь 3. Эта программа преобразует число 2 в число 50.)

7.

Дан фрагмент электронной таблицы.

 

ABC
132
2=A1–C1= 4*C1–A1=3*(B1+C1)/A1

 

Какое целое число должно быть записано в ячейке A1, чтобы диаграмма, построенная после выполнения вычислений по значениям диапазона ячеек A2:С2, соответствовала рисунку? Значения во всех ячейках диапазона A1:C2 одного знака.

8.

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

 

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

DIM N, S AS INTEGER

N = 1

S = 0

WHILE S <= 1024

S = S + 256

N = N * 2

WEND

PRINT N

var n, s: integer;

begin

    n := 1;

    s := 0;

    while s <= 1024 do

    begin

        s := s + 256;

        n := n * 2;

    end;

    write(n)

end.

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

#include <iostream>

using namespace std;

int main()

{

    int n, s;

    n = 1;

    s = 0;

    while (s <= 1024)

    {

        s = s + 256;

        n = n * 2;

    }

    cout « n « endl;

}

алг

нач

цел n, s

n := 1

s := 0

нц пока s <= 1024

    s := s + 256

    n := n * 2

кц

вывод n

кон

Python

n = 1

s = 0

while s <= 1024

    s += 256

    n *= 2

print(n)

 

9.

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

10.

Алексей составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Алексей использует 5-буквенные слова, в которых есть только буквы A, B, C, X, причём буква X может появиться только на последнем месте или не появиться вовсе. Сколько различных кодовых слов может использовать Алексей?

11.

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

 

БейсикPython

DECLARE SUB F(n)

SUB F(n)

    IF n > 0 THEN

        PRINT n

        F(n - 3)

        F(n \ 3)

    END IF

END SUB

def F(n):

    if n > 0:

        print(n)

        F(n - 3)

        F(n // 3)

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

procedure F(n: integer);

begin

    if n > 0 then begin

        writeln(n);

        F(n - 3);

        F(n div 3)

    end

end;

алг F(цел n)

нач

    если n > 0 то

        вывод n, нс

        F(n - 3)

        F(div(n, 3))

    все

кон

Си++

void F(int n) {

    if (n > 0) {

        std: :cout << n;

        F(n - 3);

        F(n / 3);

    }

}

 

 

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

12.

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

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

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

13.

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

14.

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

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

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

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

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

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

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

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

 

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

 

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 77 единиц?

 

НАЧАЛО

    ПОКА нашлось (11111)

        заменить (222, 1)

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

    КОНЕЦ ПОКА

КОНЕЦ

15.

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

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

 

16.

Запись числа в некоторой системе счисления выглядит так: . Найдите основание системы счисления q.

17.

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

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

 

ЗапросНайдено страниц
(в тысячах)
Пекин & (Москва | Токио)338
Пекин & Москва204
Пекин & Москва & Токио50

 

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

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

18.

Для какого наименьшего целого неотрицательного числа А выражение

 

(y+2x < A) \/ (x > 30) \/ (y > 20)

 

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

19.

Значения двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:

 

 

БейсикPython

 

FOR n = 1 TO 100

    A(n) = n - 10

NEXT n

FOR n = 1 TO 100

    B(n) = A(n)*n;

NEXT n

 

 

for n in range(1, 101):

    A[n] = n - 10

for n in range(1, 101):

    B[n] = A[n]*n

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

 

for n : = 1 to 100

    do A[n] : = n - 10;

for n : = 1 to 100 do begin

    B[n]:= A[n]*n;

end;

 

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

    A[n] : = n - 10

кц

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

    B[n]:=A[n]*n

кц

 

Си++

 

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

    A[n] = n - 10;

}

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

    B[n] = A[n]*n;

}

 

 

Сколько элементов массива B будут иметь положительные значения?

 

Примечание. Нуль является ни положительным, ни отрицательным числом.

20.

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

 

 

БейсикPython

DIM X, L, M AS INTEGER

INPUT X

L = 0

M = 0

WHILE X > 0

L = L + 1

IF M < x AND x mod 2 = 0 THEN

     M = x mod 10

ENDIF

x = x \ 10

PRINT L

PRINT M

x = int(input())

L = 0

M = 0

while x > 0:

    L = L + 1

    if M < x and x % 2 == 0:

        M = x % 10

    x = x // 10

print(L)

print(M)

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

var x, L, M: integer;

begin

    readln(x);

    L := 0;

    M := 0;

    while x > 0 do

    begin

        L := L + 1;

        if (M < x) and (x mod 2 = 0) then

            M:=x mod 10;

        x := x div 10;

    end;

    writeln(L);

    writeln(M);

end.

алг

нач

    цел x, L, M

    ввод x

    L := 0

    M := 0

    нц пока x > 0

        L := L + 1

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

            M := mod(x,10)

        все

        x := div(x,10)

    кц

    вывод L, нс, M

кон

Си++

 

#include <iostream>

using namespace std;

int main()

{

    int x, L, M;

    cin >> x;

    L = 0;

    M = 0;

    while (x > 0){

        L = L + 1;

        if(M < x and x % 2 == 0){

            M = x % 10;

        }

        x = x / 10;

    }

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

}

 

21.

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

 

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

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

A =-10: B = 10

M = A: R = F(А)

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 = x*x+2*x+10

END FUNCTION

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

    Function F(x:integer): integer;

        begin

            F := x*x+2*x+10

        end;

begin

    a :=-10; b := 10;

    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 x*x+2*x+10;

}

int main()

{

    int a, b, t, M, R;

    a =-10; b = 10;

    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, M, R

a :=-10; b := 10

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

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

если F(t) < R

то

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

все

кц

вывод R

кон

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

нач

знач := x*x+2*x+10

кон

Python

def f(x):

    return x*x+2*x+10

a =-10

b = 10

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. Программа для исполнителя Тренер —  это последовательность команд.

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

Траектория должна содержать оба указанных числа. Траектория вычислений – это последовательность результатов выполнения всех команд программы. Например, для программы 212 при исходном числе 7 траектория будет состоять из чисел 14, 15, 30.

23.

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

 

¬(x1 ≡ x2) ∧ ( (x1 ∧ ¬x3) ∨ (¬x1 ∧ x3) ) = 0

¬(x2 ≡ x3) ∧ ( (x2 ∧ ¬x4) ∨ (¬x2 ∧ x4) ) = 0

...

¬(x9 ≡ x10) ∧ ( (x9 ∧ ¬x11) ∨ (¬x9 ∧ x11) ) = 0

 

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

24.

Ученик написал программу, определяющую, какой степенью числа 4 является введенное. Например, для 16 это 2, так как 42 = 16. Если же такой степени нет, то необходимо вывести сообщение "Не существует". К сожалению, ученик написал программу неверно.

 

 

БейсикPython

DIM N, K AS INTEGER

INPUT N

K = 0

WHILE K MOD 4 = 0

    N = N \ 4

    K = K + 1

WEND

IF N <= 4 THEN

    PRINT K

ELSE

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

END IF

END

n = int(input())

k = 0

while k%4 == 0:

    n = n // 4

    k = k + 1

if n <= 4:

    print(k)

else:

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

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

var n, k: integer;

begin

    read(n);

    k := 0;

    while k mod 4 = 0 do begin

        n := n div 4;

        k := k + 1;

    end;

    if n <= 4 then

        writeln(k)

    else

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

end.

алг

нач

    цел n, k

    ввод n

    k := 0

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

        n := div(n,4)

        k := k + 1

    кц

    если n <= 4

        то вывод k

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

    все

кон

Си++

#include <iostream>

using namespace std;

int main(){

    int n, k;

    cin >> n;

    k = 0;

    while (k%4 == 0) {

        n = n / 4;

        k = k + 1;

    }

    if (n <= 4)

        cout « k « endl;

    else

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

    return 0;

}

 

 

 

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

 

1. Что выдаст программа при вводе числа 64?

2. При вводе какого числа программа выдаст верный ответ? Укажите этот ответ.

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

25.

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести произведение двузначных элементов массива, с суммой цифр не кратной 6. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого является двузначным числом, и при этом сумма его цифр не делится на 6. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Исходные данные всегда подобраны так, что результат произведения не выходит за пределы объявленных типов данных.

 

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

N = 30

DIM A(N) AS LONG

DIM I, J, P AS LONG

FOR I = 1 TO N

INPUT A(I)

NEXT I

...

END

const

N = 30;

var

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

i, j, p: longint;

begin

for i := 1 to N do

readln(a[i]);

...

end.

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

#include <iostream>

using namespace std;

#define N 30

int main() {

long a[N];

long i, j, p;

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

cin >> a[i];

...

}

алг

нач

цел N = 30

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

цел i, j, p

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

ввод a[i]

кц

...

кон

Eстественный язык
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, J, P. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.…
Python

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

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

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

a = []

n = 30

for i in range(0, n):

a.append(int(input()))

...

 

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

26.

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

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

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

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

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

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

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

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

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

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

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

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

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

27.

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

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

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

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

5

3

4

10

11

17

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

8

Пояснение. Из шести заданных чисел можно составить 10 попарных произведений: 3·4, 3·10, 3·11, 3·17, 4·10, 4·11, 4·17, 10·11, 10·17, 11·17 (результаты: 12, 30, 33, 51, 40, 44, 68, 110, 170, 187). Из них на 34 не делятся 8 произведения (3·4=12, 3·10=30, 3·11=33, 3·17=51, 4·10=40, 4·11=44, 10·11=110, 11·17=187).

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

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

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

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

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

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

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

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