Русский язык (Определение главной информации текста)
Результаты теста
Затрачено времени:
10:18:04
Вопрос 1
Сколько единиц в двоичной записи десятичного числа 519?
Пояснение
Переведём число 519 в двоичную систему:
51910 = 29 + 22 + 21 + 20 = 10000001112.
Ваш ответ:
Вы пропустили вопрос
Вопрос 2
Логическая функция F задаётся выражением ((y → x) ≡ (x → w)) ∧ (z ∨ x).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
Переменная 1 | Переменная 2 | Переменная 3 | Переменная 4 | Функция |
??? |
??? |
??? |
??? |
F |
0 |
|
|
0 |
1 |
0 |
0 |
0 |
|
1 |
|
|
0 |
|
1 |
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Переменная 1 | Переменная 1 | Функция |
??? |
??? |
F |
0 |
1 |
0 |
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Пояснение
Рассмотрим данное выражение. Преобразуем логическое выражение ((y → x) ≡ (x → w)) ∧ (z ∨ x) и получим систему, при которой оно истинно:
Заметим, что четвёртый столбец таблицы истинности это z, тогда третий столбец таблицы истинности это переменная x. Из условия следует, что переменная y соответствует первому столбцу таблицы истинности, а переменная wсоответствует второму столбцу таблицы истинности.
Ответ: ywxz.
Ваш ответ:
Вы пропустили вопрос
Вопрос 3
Между населёнными пунктами A, B, C, D, E, F, Z построены дороги, протяжённость которых приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пунктами нет.)
|
A |
B |
C |
D |
E |
F |
Z |
A |
|
4 |
6 |
|
|
|
39 |
B |
4 |
|
1 |
|
|
|
|
C |
6 |
1 |
|
11 |
|
|
28 |
D |
|
|
11 |
|
4 |
6 |
10 |
E |
|
|
|
4 |
|
|
8 |
F |
|
|
|
6 |
|
|
2 |
Z |
39 |
|
28 |
10 |
8 |
2 |
|
Определите длину кратчайшего пути между пунктами A и Z (при условии, что передвигаться можно только по построенным дорогам).
Пояснение
Составим маршрут следующим образом: стартуя из пункта А, будем всегда выбирать тот пункт, расстояние до которого наименьшее. Получим маршрут A—B—C—D—E—Z, его длина равна 28 км. Теперь, начиная с конца маршрута, будем изменять населённые пункты:
A—B—C—D—F—Z: длина маршрута 24 км,
A—B—C—D—Z: длина маршрута 26 км.
Дальнейшее изменение населённых пунктов, через которые проходит маршрут, бессмысленно, поскольку длины маршрутов будут более 24 км. Следовательно, длина кратчайшего маршрута равна 24 км.
Ваш ответ:
Вы пропустили вопрос
Вопрос 4
В фрагменте базы данных представлены сведения о родственных отношениях. На основании приведённых данных определите ID родной сестры Лемешко В. А.
Таблица 1 |
ID |
Фамилия_И.О. |
Пол |
1072 |
Онищенко А. Б. |
М |
1028 |
Онищенко Б. Ф. |
М |
1099 |
Онищенко И. Б. |
М |
1178 |
Онищенко П. И. |
М |
1056 |
Онищенко Т. И. |
М |
1065 |
Корзун А. И. |
Ж |
1131 |
Корзун А. П. |
Ж |
1061 |
Корзун Л. А. |
М |
1217 |
Корзун П. А. |
М |
1202 |
Зельдович М. А. |
Ж |
1027 |
Лемешко Д. А. |
Ж |
1040 |
Лемешко В. А. |
Ж |
1046 |
Месяц К. Г. |
М |
1187 |
Лукина Р. Г. |
Ж |
1093 |
Фокс П. А. |
Ж |
1110 |
Друк Г. Р. |
Ж |
|
Таблица 2 |
ID_Родителя |
ID_Ребенка |
1027 |
1072 |
1027 |
1099 |
1028 |
1072 |
1028 |
1099 |
1072 |
1040 |
1072 |
1202 |
1072 |
1217 |
1099 |
1156 |
1099 |
1178 |
1110 |
1156 |
1110 |
1178 |
1131 |
1040 |
1131 |
1202 |
1131 |
1217 |
1187 |
1061 |
1187 |
1093 |
|
Пояснение
1) ID Лемешко В. А.: 1040.
2) Из таблицы 2 определяем, что ID родителей Лемешко В. А.: 1072, 1131.
3) Из таблицы 2 определяем, что ID братьев и сестер Лемешко В. А.: 1202, 1217.
4) Из таблицы 1 определяем, что сестра Лемешко В. А. — Зельдович М. А.
Ваш ответ:
Вы пропустили вопрос
Вопрос 5
Для кодирования некоторой последовательности, состоящей из букв И, К, Л, М, Н, решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для буквы Н использовали кодовое слово 0, для буквы К – кодовое слово 10. Какова наименьшая возможная суммарная длина всех пяти кодовых слов?
Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.
Пояснение
Нельзя использовать кодовые слова, которые начинаются с 0 или с 10. 11 также не можем использовать, поскольку тогда мы больше не сможем взять никакое другое кодовое слово, а нам их нужно пять. Поэтому берём трёхзначное 110. 111 опять же не можем использовать, потому что понадобиться ещё одно кодовое слово, а вместе с этим не останется больше свободных. Теперь осталось взять всего два слова и это будут 1110 и 1111. Итого имеем 0, 10, 110, 1110 и 1111 — 14 символов.
Ваш ответ:
Вы пропустили вопрос
Вопрос 6
Исполнитель КУЗНЕЧИК живёт на числовой оси. Начальное положение КУЗНЕЧИКА – точка 10. Система команд Кузнечика:
Вперед 7 – Кузнечик прыгает вперёд на 7 единиц,
Назад 4 – Кузнечик прыгает назад на 4 единицы.
Какое наименьшее количество раз должна встретиться в программе команда «Назад 4», чтобы Кузнечик оказался в точке 43?
Пояснение
Обозначим через количество команд «Вперед 7» в программе, а через – количество команд «Назад 4», причём и могут быть только неотрицательными целыми числами.
Для того, чтобы КУЗНЕЧИК попал в точку 43 из точки 10, должно выполняться условие:
Представим его в виде:
Из последнего уравнения видно, что левая часть должна делиться на 4.
Из всех решений нас интересует такое, при котором – наименьшее возможное число.
Видно, что , иначе y .
Используем метод подбора:
Наименьшее число команд «Назад 4» .
Ваш ответ:
Вы пропустили вопрос
Вопрос 7
Дан фрагмент электронной таблицы:
|
B |
C |
D |
69 |
5 |
10 |
|
70 |
6 |
9 |
=СЧЁТ(B69:C70) |
71 |
|
|
=СРЗНАЧ(B69:D70) |
После перемещения содержимого ячейки C70 в ячейку C71 значение в ячейке D71 изменится по абсолютной величине на:
Пояснение
Значение в ячейке D70 до перемещения — 4 (все четыре ячейки (B69:C70) заняты), а в ячейке D71 — 6,8 ((B69+C69+B70+C70+D70)/5).
Значение в ячейке D70 после перемещения — 3 (ячейка С70 стала пустой), а в ячейке D71 — 6((B69+C69+B70+D70)/4).
6,8-6=0,8
Ваш ответ:
Вы пропустили вопрос
Вопрос 8
Определите, что будет напечатано в результате выполнения программы (записанной ниже на разных языках программирования).
Бейсик | Паскаль |
DIM N, S AS INTEGER
N = 30
S = 25
WHILE S < 425
S = S + 40
N = N + 10
WEND
PRINT N
|
var n, s: integer;
begin
n : = 30;
s : = 25;
while s < 425 do
begin
s : = s + 40;
n : = n + 10
end;
write(n)
end.
|
Си++ | Алгоритмический язык |
#include <iostream>
using namespacestd;
int main()
{
int n, s;
n = 30;
s = 25;
while (s < 425)
{
s = s + 40;
n = n + 10;
}
cout « n « endl;
}
|
алг
нач
цел n, s
n : = 30
s : = 25
нц пока s < 425
s : = s + 40
n : = n + 10
кц
вывод n
кон
|
Python |
n = 30
s = 25
while s < 425:
s += 40
n += 10
print(n)
|
Пояснение
Цикл while выполняется до тех пор, пока истинно условие s < 425, т. е. переменная s определяет, сколько раз выполнится цикл.
Цикл выполнится раз (здесь мы учли, что начальное значение s = 25). На десятом шаге s станет равной 425 и условие s < 425 окажется невыполненным, цикл прервется. Следовательно, значение n будет равно 10·10 + 30 = 130.
Ваш ответ:
Вы пропустили вопрос
Вопрос 9
Скорость передачи данных через ADSL-соединение равна 128000 бит/с. Передача текстового файла через это соединение заняла 1 минуту. Определите, сколько символов содержал переданный текст, если известно, что он был представлен в 16-битной кодировке Unicode.
Пояснение
Объём информации вычисляется по формуле Q = q * t, где t — время передачи q — cкорость передачи данных. Поэтому
Q = 128000 бит/c * 60 c.
Каждый символ в данной кодировке кодируется 16-ю битами. Следовательно, количество символов определится так:
N = 128000 бит/c * 60 c : 16 = 8000 * 60 = 480 000.
Ваш ответ:
Вы пропустили вопрос
Вопрос 10
Все 4-буквенные слова, составленные из букв С, Л, О, Н записаны в алфавитном порядке и пронумерованы.
Вот начало списка:
1. ЛЛЛЛ
2. ЛЛЛН
3. ЛЛЛО
4. ЛЛЛС
5. ЛЛНЛ
……
Запишите слово, которое стоит под номером 250.
Пояснение
Заменим буквы Л, Н, О, С на 0, 1, 2, 3 (для них порядок очевиден – по возрастанию).
Выпишем начало списка, заменив буквы на цифры:
1. 0000
2. 0001
3. 0002
4. 0003
5. 0010
...
Полученная запись есть числа, записанные в четверичной системе счисления в порядке возрастания. Тогда на 250 месте будет стоять число 249 (т. к. первое число 0). Переведём число 249 в четверичную систему (деля и снося остаток справа налево):
249 / 4 = 62 (1)
62 / 4 = 15 (2)
15 / 4 = 3 (3)
3 / 4 = 0 (3)
В четверичной системе 249 запишется как 3321. Произведём обратную замену и получим ССОН.
Ваш ответ:
Вы пропустили вопрос
Вопрос 11
Ниже на пяти языках программирования записаны две рекурсивные функции: F и G.
Бейсик | Python |
DECLARE FUNCTION F(n)
DECLARE FUNCTION G(n)
FUNCTION F(n)
IF n > 2 THEN
F = F(n - 1) + G(n-2)
ELSE
F = 1
END IF
END FUNCTION
FUNCTION G(n)
IF n > 2 THEN
G = G(n - 1) + F(n-2)
ELSE
G = 1
END IF
END FUNCTION
|
def F(n):
if n > 2:
return F(n-1)+ G(n-2)
else: return 1
def G(n):
if n > 2:
return G(n-1) + F(n-2)
else: return 1
|
Паскаль | Алгоритмический язык |
function F(n: integer): integer;
begin
if n > 2 then
F := F(n - 1) + G(n - 2)
else
F := 1;
end;
function G(n: integer): integer;
begin
if n > 2 then
G := G(n - 1) + F(n - 2)
else
G := 1;
end;
|
алг цел F(цел n)
нач
если n > 2
то
знач := F(n - 1) + G(n - 2)
иначе
знач := 1
все
кон
алг цел G(цел n)
нач
если n > 2
то
знач := G(n - 1) + F(n - 2)
иначе
знач := 1
все
кон
|
Си |
int F(int n)
{
if (n > 2)
return F(n-1) + G(n-2);
else return 1;
}
int G(int n)
{
if (n > 2)
return G(n-1) + F(n-2);
else return 1;
}
|
Чему будет равно значение, вычисленное при выполнении вызова F(7)?
Пояснение
Распишем, что выводит функция начиная с 1:
F(1) = 1;
F(2) = 1;
F(3) = G(1) + F(2) = 2;
F(4) = G(2) + F(3) = 1 + 2 = 3;
F(5) = F(4) + G(3) = 3 + 2 = 5;
F(6) = F(5) + G(4) = 5 + 3 = 8;
F(7) = F(6) + G(5) = 8 + 5 = 13.
Ваш ответ:
Вы пропустили вопрос
Вопрос 12
В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. По заданным IP-адресу узла и маске определите адрес сети. IP-адрес узла: 135.12.166.217 Маска: 255.255.248.0 При записи ответа выберите из приведённых в таблице чисел четыре элемента IP-адреса и запишите в нужном порядке соответствующие им буквы без использования точек.
A | B | C | D | E | F | G | H |
170 |
168 |
160 |
135 |
132 |
16 |
12 |
0 |
Пример. Пусть искомый IP-адрес 191.153.128.0, и дана таблица
A | B | C | D | E | F | G | H |
255 |
167 |
128 |
0 |
153 |
8 |
191 |
192 |
В этом случае правильный ответ будет записан в виде: GECD.
Пояснение
Поскольку первый и второй байт маски 255, то значения будут совпадать с исходными байтами IP узла (т. е. 135 и 12).
Четвертый байт будет 0, т. к. четвертый байт маски тоже 0. Посчитаем третий байт:
166 = 101001102
248 = 111110002
Тогда третий байт = 101000002 = 16010.
Ответ 135.12.160.0 по буквам — это DGCH.
Ваш ответ:
Вы пропустили вопрос
Вопрос 13
При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 14 символов и содержащий только символы Е, Г, Э, 2, 0, 1, 4. Каждый такой пароль в компьютерной программе записывается минимально возможным и одинаковым целым количеством байт (при этом используют посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством бит).
Определите объём памяти, отводимый этой программой для записи 30 паролей. (Ответ дайте в байтах.)
Пояснение
Согласно условию, в номере могут быть использованы 7 символов. Известно, что с помощью N бит можно закодировать 2Nразличных вариантов. Поскольку 22 < 7 < 23, то для записи каждого из 7 символов необходимо 3 бита.
Для хранения всех 14 символов номера нужно 3 · 14 = 42 бита, а т. к. для записи используется целое число байт, то берём ближайшее не меньшее значение, кратное восьми, это число 48 = 6 · 8 бит (6 байт).
Тогда для записи тридцати паролей необходимо 6 · 30 = 180 байт.
Ваш ответ:
Вы пропустили вопрос
Вопрос 14
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, состоит из 8 команд. Четыре команды — это команды-приказы:
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно (по отношению к наблюдателю): вверх ↑, вниз ↓, влево ←, вправо →.
Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ (также по отношению к наблюдателю):
сверху свободно |
снизу свободно |
слева свободно |
справа свободно |
Цикл
ПОКА < условие >
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ < условие >
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
В конструкциях ПОКА и ЕСЛИ условие может содержать команды проверки, а также слова И, ИЛИ, НЕ, обозначающие логические операции. Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится и программа прервётся.
Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?
НАЧАЛО
ПОКА снизу свободно ИЛИ справа свободно
ЕСЛИ снизу свободно
ТО вниз
ИНАЧЕ вправо
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Пояснение
При данной программе РОБОТ поступает следующим образом: сперва РОБОТ проверяет, свободна ли клетка справа или снизу от него. Если это так, то РОБОТ переходит к первому действию внутри цикла. В этом цикле если у нижней стороны клетки, в которой находится РОБОТ, нет стены, он двигается вниз, в противном случае он перемещается вправо. После этого возвращается к началу внешнего цикла.
Проверив все клетки по выведенному нами правилу движения РОБОТА, выясняем, что число клеток, удовлетворяющих условию задачи равно 16 (весь столбец F, E1-E5, клетки D1, D2, D3, D4, D5).
Ваш ответ:
Вы пропустили вопрос
Вопрос 15
На рисунке – схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.
Сколько существует различных путей из города А в город M?
Пояснение
Начнем считать количество путей с конца маршрута – с города М. NX — количество различных путей из города А в город X, N — общее число путей.
В "М" можно приехать из Д, Е, К или Л, поэтому N = NМ = NД + NЕ + N К + N Л (1)
Аналогично:
NД = NГ;
NЕ = NГ + NЖ + NК;
NК = NИ,
NЛ = NК.
Добавим еще вершины:
NГ = NВ + NЖ;
NЖ = NВ + NИ;
NИ = NА = 1;
NВ = NБ + NА = 2;
NБ = NА = 1.
Преобразуем вершины:
NГ = NВ + NЖ = 2 + 3 = 5;
NЖ = NВ + NИ = 2 + 1 = 3;
NИ = NА = 1;
NВ = NБ = 1;
NБ = NА = 1.
NД = NГ = 5;
NЕ = NГ + NЖ + NК = 5 + 3 + 1 = 9;
NК = NИ = 1,
NЛ = NК = 1.
Подставим в формулу (1):
N = NМ = 5 + 9 + 1 + 1 = 16.
Ваш ответ:
Вы пропустили вопрос
Вопрос 16
Сколько единиц содержится в двоичной записи значения выражения:
42016 + 22015 − 7?
Пояснение
Преобразуем выражение:
Число 24032 в двоичной записи записывается как единица и 4032 нуля. Добавив число 22015, получаем 100...00100...000 (единица, 2016 нулей, единица, 2015 нулей, всего 4033 разрядных цифр). Если вычесть из этого числа 23 = 10002, то число примет вид 100...001...1000. В полученном числе единица, 2017 нулей, 2012 единиц и три нуля. После прибавления единицы последний ноль станет единицей, то есть в числе 2014 единиц.
Ваш ответ:
Вы пропустили вопрос
Вопрос 17
В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для логической операции «И» – символ «&». В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет:
Запрос | Найдено страниц (в тысячах) |
Евклид & Аристотель |
240 |
Евклид & (Аристотель | Платон) |
450 |
Евклид & Аристотель & Платон |
90 |
Компьютер печатает количество страниц (в тысячах), которое будет найдено по следующему запросу:
Евклид & Платон.
Укажите целое число, которое напечатает компьютер. Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.
Пояснение
Количество запросов в данной области будем обозначать Ni. Наша цель — N4 + N5. Тогда из таблицы находим, что:
N2 + N5 = 240,
N5 = 90,
N2 + N4 + N5 = 450.
Из первого и второго равенств находим: N2 = 150, из последнего равенства: N4 + N5 = 300.
Ваш ответ:
Вы пропустили вопрос
Вопрос 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; в представленном фрагменте обрабатываются элементы массива с индексами от 1 до 10.
Бейсик | Python |
n = 10
d = 6
FOR j = 1 TO d
s = A(1)
FOR i = 1 TO n-1
A(i) = A(i+1)
NEXT i
A(10) = s
NEXT j
|
n = 10
d = 6
for j in range(1,d+1):
s = A[1]
for i in range(1,n):
A[i] = A[i+1]
A[10] = s
|
Паскаль | Алгоритмический язык |
n := 10;
d := 6;
for j:=1 to d do begin
s := A[1];
for i:=1 to n-1 do begin
A[i] := A[i+1];
end;
A[10] := s;
end;
|
n := 10
d := 6
нц для j от 1 до d
s := A[1]
нц для i от 1 до n-1
A[i] := A[i+1]
кц
A[10]:= s
кц
|
Си++ |
n = 10;
d = 6;
for (j = 1; j <= d; j++) {
s = A[1];
for (i = 1; i <= n-1; i++) {
A[i] = A[i+1];
}
A[10] = s;
}
|
Перед началом выполнения программы эти элементы массива имели значения 0, 1, 4, 9, 6, 5, 6, 8, 4, 1 (т.е. A[1] = 0; A[2] = 1; …; A[10] = 1).
Значение какого из этих элементов массива будет наибольшим после выполнения фрагмента программы? В ответе укажите индекс элемента – число от 1 до 10.
Пояснение
Данный алгоритм сдвигает значения массива влево на один индекс 6 раз, при этом, первое значение массива идет в конец.
Изначальный порядок значений: 0, 1, 4, 9, 6, 5, 6, 8, 4, 1.
Первый шаг: 1, 4, 9, 6, 5, 6, 8, 4, 1, 0. Продолжаем далее.
Шестой шаг: 6, 8, 4, 1, 0, 1, 4, 9, 6, 5.
Таким образом, наибольшее значение стоит на 8 месте, у него индекс 8.
Ваш ответ:
Вы пропустили вопрос
Вопрос 20
Ниже записана программа. Получив на вход число x , эта программа печатает два числа, L и M. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 7.
Бейсик | Python |
DIM X, L, M AS INTEGER
INPUT X
L = 0
M = 0
WHILE X > 0
L = L + 1
IF M < x THEN
M = X MOD 10
ENDIF
X = X 10
WEND
PRINT L
PRINT M
|
x = int(input())
L = 0
M = 0
while x > 0:
L += 1
if M < x:
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 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
то
M := mod(x,10)
все
x := div(x,10)
кц
вывод L, нс, M
кон
|
Си++ |
#include <iostream>
using namespacestd;
int main()
{
int x, L, M;
cin >> x;
L = 0;
M = 0;
while (x > 0){
L = L + 1;
if(M < x){
M = x % 10;
}
x = x / 10;
}
cout << L << endl << Mendl;
}
|
Пояснение
Рассмотрим цикл, число шагов которого зависит от изменения переменной x:
while x > 0 do begin
...
x:= x div 10;
end;
Т. к. оператор div оставляет только целую часть от деления, то при делении на 10 это равносильно отсечению последней цифры.
Из приведенного цикла видно, что на каждом шаге от десятичной записи x отсекается последняя цифра до тех пор, пока все цифры не будут отсечены, то есть x не станет равно 0; поэтому цикл выполняется столько раз, сколько цифр в десятичной записи введенного числа, при этом число L столько же раз увеличивается на 1. Следовательно, конечное значение L совпадает с числом цифр в x. Для того, чтобы L стало L = 3, x должно быть трёхзначным.
Теперь рассмотрим оператор изменения М:
if M < x then begin
M:=x mod 10;
end;
Оператор mod оставляет только остаток от деления, при делении на 10 это последняя цифра.
После первого шага M может быть любым однозначным числом, т. к. на втором шаге число x двузначное, а однозначное число всегда меньше любого двузначного, а значит, M может приобрести интересующее нас значение 7. Поэтому третья цифра числа x x(3) = 9.
Вторая цифра уже не может быть любой, так как при x(2) > x(1) значение переменной M уже не поменяется на третьем шаге. Поэтому x(2) не превышает 7. Поскольку мы хотим получить наибольшее число x, мы берём x(1) = 7. Осталось верно определить x(2).
Число x достигнет максимума при x(2)=7, при этом на третьем шаге переменная M уже не изменится, потому что нарушено условие M < x (7 = 7).
Окончательно получаем: x = 779.
Ваш ответ:
Вы пропустили вопрос
Вопрос 21
Какое число будет напечатано в результате работы следующей программы? Для Вашего удобства программа приведена на пяти языках программирования.
Бейсик | Python |
DIM A, B, T, M, R AS INTEGER
A = −11: B = 11
M = A : R = F(A)
FOR T = A TO B
IF F(T) < R THEN
M = T
R = F(T)
END IF
NEXT T
PRINT M+R
FUNCTION F(x)
IF X > 0 THEN
F = x * x + 4
ELSE
F = x * x + 5
END IF
END FUNCTION
|
def F(x):
if x > 0:
return x * x + 4
else:
return x * x + 5
a = −11; b = 11
M = a; R = F(a)
for t in range(a,b+1):
if F(t) < R:
M = t; R = F(t)
print(M+R)
|
Паскаль | Алгоритмический язык |
var
a, b, t, M, R: integer;
function F(x: integer): integer;
begin
if x > 0
then F := x * x + 4
else F := x * x + 5;
end;
begin
a := −11; b := 11;
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(M+R);
end.
|
алг
нач
цел a, b, t, M, R
a := −11; b := 11
M := a; R := F(a)
нц для t от a до b
если F(t) < R
то M := t; R := F(t)
все
кц
вывод M + R
кон
алг цел f(цел x)
нач
если x > 0
то знач := x * x + 4
иначе знач := x * x + 5
все
кон
|
С++ |
#include <iostream>
using namespacestd;
long f(int x) {
if (x > 0) return x * x + 4;
else return x * x + 5;
}
int main()
{
int a, b, t, M, R;
a = −11; b = 11;
M = a; R = f(a);
for (t = a; t <=b; ++t) {
if (f(t) < R) {
M = t; R = f(t);
}
}
cout << M + R;
return 0;
}
|
Пояснение
1. Алгоритм предназначен для поиска наименьшего значения функции F(t) на отрезке от a до b, суммирования наименьшего значения с t, при котором значение F(t) будет наименьшим и вывода этой суммы на экран.
2. , если x > 0, и , если x ≤ 0. Заметим, что наименьшее значение функции, равное 5, достигается в точках 0 и 1. Поскольку в условии присвоения значения функции стоит знак «<» (if F(t) < R), программа выведет результат для точки 0. Теперь складываем 0 и 5 и получаем 5.
Ваш ответ:
Вы пропустили вопрос
Вопрос 22
У исполнителя Прибавитель две команды, которым присвоены номера:
1. прибавь 1,
2. увеличь старшую цифру числа на 1.
Первая из них увеличивает число на экране на 1, вторая увеличивает на 1 старшую (левую) цифру числа, например число 23 с помощью такой команды превратится в число 33. Если старшая цифра числа равна 9, то вторая команда оставляет это число неизменным. Программа для Прибавителя — это последовательность команд. Сколько есть программ, которые число 15 преобразуют в число 38?
Пояснение
Обе команды увеличивают исходное число. Старшая цифра — 1, следовательно, использовать команду 2 более двух раз бессмысленно.
Выпишем программы, в которых команда 2 используется два раза: 11122, 11212, 12112, 21112, 21121, 21211, 22111, 12121, 12211, 11221. Итого 10 программ.
Выпишем программы, в которых команда 2 используется один раз. Использовав эту команду в первой позиции, мы получим из числа 15 число 25, следовательно, после этого необходимо будет дописать ещё 13 команд 1 чтобы получить число 38. Таким образом, получаем программы: 211...1, 121...1, и. т. д. Итого имеем 14 программ (двойка побывала в каждой позиции).
Существует всего одна программа, в которой команда 2 не используется: 111....1.
Таким образом, имеем 10 + 14 + 1 = 25 программ.
Ваш ответ:
Вы пропустили вопрос
Вопрос 23
Сколько существует различных наборов значений логических переменных x1, x2, ... x6, y1, y2, ... y6, которые удовлетворяют всем перечисленным ниже условиям?
(x1 ∧ y1) ≡ (¬x2 ∨ ¬y2)
(x2 ∧ y2) ≡ (¬x3 ∨ ¬y3)
…
(x5 ∧ y5) ≡ (¬x6 ∨ ¬y6)
В ответе не нужно перечислять все различные наборы значений переменных x1, x2, ... x6, y1, y2, ... y6, при которых выполнена данная система равенств. В качестве ответа Вам нужно указать количество таких наборов.
Пояснение
Можно заметить, что ¬x2 ∨ ¬y2 (правая часть первого тождества) = ¬(x2 ∧ y2) (отрицание левой части второго неравенства) по закону Де Моргана. То есть значения выражений чередуются в каждой строчке. 0-1-0-1-0 или 1-0-1-0-1.
Пусть они чередуются 0-1-0-1-0. Тогда первая пара переменных может принимать три набора значений — (0, 0), (0, 1), (1, 0). Вторая пара только один набор — (1, 1). И дальше так же чередуется. Итого имеем решений.
Пусть они чередуются 1-0-1-0-1. Тогда первая пара может принимать лишь один набор значений — (1, 1). Аналогично первому случаю количество здесь чередуется 1-3-1-3-1-3. Итого в этом случае имеем решений.
Всего решений.
Ваш ответ:
Вы пропустили вопрос
Вопрос 24
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
Паскаль | Бейсик |
var х,у: real;
begin
readln(х,у);
if у<=0 then
if у>= −1 then
if y<=cos (x) then
write('принадлежит')
else
write('не принадлежит')
end.
|
INPUT x, у
IF y<=0 THEN
IF y>= −l THEN
IF y<=cos(x) THEN
PRINT "принадлежит"
ELSE
PRINT "не принадлежит"
ENDIF
ENDIF
ENDIF
END
|
Си++ | Алгоритмический |
int main(void)
{ float x, y;
cin >> x >> y;
if (y<= 0)
if (У>= -1)
if (y<= cos(x))
cout << "принадлежит";
else
cout << "не принадлежит";
}
|
алг
нач
вещ x,y
ввод x,y
если y<=0 то
если y>= −l то
если y<=cos(x) то
вывод 'принадлежит'
иначе
вывод 'не принадлежит'
все
все
все
кон
|
Python |
x,y = float(input())
if y<=0:
if y>= −l:
if y<=cos(x):
print("принадлежит")
else:
print("не принадлежит")
|
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область |
Условие 1 (у<=0) |
Условие 2 (у>= −1) |
Условие 3 (y<=cos (x)) |
Программа выведет |
Область обрабатывается верно |
A |
|
|
|
|
|
В |
|
|
|
|
|
С |
|
|
|
|
|
D |
|
|
|
|
|
Е |
|
|
|
|
Пояснение
1.
Область |
Условие 1 (у<=0) |
Условие 2 (у>= −1) |
Условие 3 (y<=cos (x)) |
Программа выведет |
Область обрабатывается верно |
A |
нет |
— |
— |
— |
нет |
В |
да |
да |
да |
принадлежит |
нет |
С |
да |
да |
нет |
не принадлежит |
да |
D |
да |
да |
да |
принадлежит |
да |
Е |
да |
да |
нет |
не принадлежит |
да |
2. Возможная доработка (Паскаль):
if (у <= 0) and (у >= −1) and (у <= cos(х)) and (х >= −Pi) and (х <= Pi)
then write('принадлежит')
else write('не принадлежит')
Ваш ответ:
Вы пропустили вопрос
Вопрос 25
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать произвольные значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит значение 3-го положительного элемента массива (если из массива вычеркнуть все неположительные элементы, этот элемент стоял бы в получившемся массиве на третьем месте). Если в массиве меньше, чем три положительных элемента, вывести об этом сообщение.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль | Бейсик |
const
N = 40;
var
a: array [l..N] of integer;
i, j, k: integer;
begin
for i:=1 to N do
readln(a[i]);
...
end.
|
N = 40
DIM A (N) AS INTEGER
DIM I, J, К AS INTEGER
FOR I = 1 TO N
INPUT A (I)
NEXT I
...
END
|
Си++ | Алгоритмический язык |
#include <iostream>
using namespacestd;
#define N 40
int main(void)
{int a [N] ;
int i, j, k;
for (i = 0; i < N; i + +)
cin >> a[i];
...
}
|
алг
нач
цел N = 40
целтаб а[1:N]
цел i, j, k
нц для i от 1 до N
ввод a[i]
кц
...
кон
|
Естественный язык |
Объявляем массив А из 40 элементов.
Объявляем целочисленные переменные I, J, К.
В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.
...
|
Python |
//допускается также использо-
// вание целочисленных
// переменных j, k
a = []
N = 40 // менять значение N
нельзя
for i in range(0, n):
a.append(int(input()))
…
|
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Пояснение
ПАСКАЛЬ |
БЕЙСИК |
k : = 0;
for i : = 1 to N do
if a[i] > 0 then
begin
k := k + 1;
if k = 3 then
j=a[i];
end;
if k < 3 then
writeln('нет такого')
else
writeln(j);
|
К = 0
FOR I = 1 ТО N
IF А (I) > 0 THEN
К = К + 1
IF К = 3 THEN
J = A (I)
ENDIF
ENDIF
NEXT I
IF К < 3 THEN
PRINT "нет такого"
ELSE
PRINT J
ENDIF
|
СИ |
Алгоритмический язык |
k = 0;
for(i = 0; i < N; i++)
if (a[i] > 0)
{
k++;
if(k == 3)
j = a[i];
}
if(k < 3)
cout << "нет такого";
else
printf("%d", j) ;
|
k := 0
нц для i от 1 до N
если а[i] > 0
то
k := k + 1
если k = 3
то
j := a[i]
все
все
кц
если к < 3
то
вывод "нет такого"
иначе
вывод J
все
|
Естественный язык |
Записываем в переменную К начальное значение, равное нулю. В цикле перебираем все элементы с 1-го до 40-го. Если значение текущего элемента массива оказывается больше нуля, то: увеличиваем значение переменной К на 1; если значение переменной К стало равно 3, в переменную J записываем значение элемента a[I].
После окончания цикла: если значение переменной К оказалось меньше 3, то выводим сообщение, что искомого элемента в массиве нет. Иначе, выводим значение переменной J.
|
Ваш ответ:
Вы пропустили вопрос
Вопрос 26
Два игрока, Паша и Вася, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Паша. За один ход игрок может добавить в кучу один или два камня или увеличить количество камней в куче в три раза. Например, имея кучу из 15 камней, за один ход можно получить кучу из 16, 17 или 45 камней. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 51. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 51 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 50.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте свой ответ.
Задание 1. а) Укажите все такие значения числа S, при которых Паша может выиграть в один ход. Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого указанного значения S.
б) Укажите такое значение S, при котором Паша не может выиграть за один ход, но при любом ходе Паши Вася может выиграть своим первым ходом. Опишите выигрышную стратегию Васи.
Задание 2. Укажите два таких значения S, при которых у Паши есть выигрышная стратегия, причём (а) Паша не может выиграть за один ход и (б) Паша может выиграть своим вторым ходом независимо от того, как будет ходить Вася. Для каждого указанного значения S опишите выигрышную стратегию Паши.
Задание 3. Укажите значение S, при котором:
— у Васи есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Паши, и
— у Васи нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Для указанного значения S опишите выигрышную стратегию Васи. Постройте дерево всех партий, возможных при этой выигрышной стратегии Васи (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах – количество камней в
Пояснение
Задание 1.
а) Паша может выиграть, если S = 17, … 50. Во всех этих случаях достаточно утроить количество камней. При меньших значениях S за один ход нельзя получить кучу, в которой больше 50 камней.
б) Вася может выиграть первым ходом (как бы ни играл Паша), если исходно в куче будет S = 16 камня. Тогда после первого хода Паши в куче будет 17, 18 или 48 камней. Во всех случаях Вася утраивает количество камней и выигрывает в один ход.
Задание 2.
Возможные значения S: 14, 15. В этих случаях Паша, очевидно, не может выиграть первым ходом. Однако он может получить кучу из 16 камней: в первом случае добавлением одного камня, во втором — добавлением двух камней. Эта позиция разобрана в п. 1б. В ней игрок, который будет ходить (теперь это Вася), выиграть не может, а его противник (то есть Паша) следующим ходом выиграет.
Задание 3.
Возможное значение S: 13. После первого хода Паши в куче будет 14, 15 или 39 камней. Если в куче станет 39 камней, Вася утроит количество камней и выиграет первым ходом. Ситуация, когда в куче 14 или 15 камней, разобрана в п. 2. В этих ситуациях игрок, который будет ходить (теперь это Вася), выигрывает своим вторым ходом.
В таблице приведены возможные партии при описанной стратегии Васи. Заключительные позиции (в них выигрывает Вася) подчёркнуты. На рисунке дерево изображено в графическом виде (оба способа изображения дерева допустимы).
Ваш ответ:
Вы пропустили вопрос
Вопрос 27
В командных олимпиадах по программированию для решения предлагается не больше 12 задач. Команда может решать предложенные задачи в любом порядке. Подготовленные решения команда посылает в единую проверяющую систему соревнований. Вам предлагается написать эффективную, в том числе по используемой памяти, программу, которая будет статистически обрабатывать пришедшие запросы, чтобы определить наименее популярные задачи. Следует учитывать, что количество запросов в списке может быть очень велико, так как многие соревнования проходят с использованием сети Интернет. Перед текстом программы кратко опишите используемый Вами алгоритм решения задачи. На вход программе в первой строке подаётся количество пришедших запросов N. В каждой из последующих N строк записано название задачи в виде текстовой строки. Длина строки не превосходит 100 символов, название может содержать буквы, цифры, пробелы и знаки препинания. Пример входных данных:
6
А+B
Крестики-Нолики
А+В
Простой делитель
А+В
Простой делитель
Программа должна вывести список из трёх задач, встречающихся в запросах наименьшее число раз, с указанием количества запросов по ним. Если в запросах упоминается менее трёх задач, то выведите информацию об имеющихся задачах. Если несколько задач имеют ту же частоту встречаемости, что и третья по частоте встречаемости задача, то выведите только одну из них. Пример выходных данных для приведённого выше примера входных данных:
Крестики-Нолики 1
Простой делитель 2
А+В 3
Пояснение
Программа читает все входные данные один раз, не запоминая их в массиве, размер которого равен N, а составляя только список встретившихся задач и количества запросов по каждой из них. Во время чтения данных об очередной задаче просматривается список ранее сохранённых задач; если она уже есть в списке, то количество запросов по ней увеличивается на 1, иначе задача добавляется в массив упомянутых в запросах задач (при корректных данных размер массива не может быть больше 12). После окончания ввода производится сортировка массивов задач и количества запросов, отданных за них, в порядке возрастания количества запросов; затем выводится список из трёх первых задач с указанием частоты встречаемости (или весь список, если его длина меньше трёх). Вместо сортировки можно применить и алгоритм поиска трёх минимальных элементов в массиве или три первых итерации сортировки. Затем выводятся три первые (или найденные наименее популярные) задачи. Баллы начисляются только за программу, которая решает задачу хотя бы для одного частного случая. Ниже приведены примеры решения задания на языках Паскаль и Бейсик. Допускаются решения, записанные на других языках программирования. При оценивании решений на других языках программирования необходимо учитывать особенности этих языков программирования. Так, на языке C++ при считывании строковой переменной будет считано не всё название задачи, а только его первое слово, поэтому следует использовать функцию getline(cin,s); аналогичная проблема возникает и в языке Си
Пример правильной и эффективной программы на языке Паскаль: | Пример правильной и эффективной программы на языке Бейсик: |
Var n, Num, i, j, t: integer;
Count: array[1..12] of integer;
s: string;
Names: array[1..12] of string;
Begin
Num:=0;
ReadLn(N);
for i:=1 to N do
begin
ReadLn(S);
j:=1;
while (j<=Num) and (s<>Names[j]) do j:=j+1;
if j<=Num then
Count[j]:=Count[j]+1
else begin
Names[j]:=s;
Count[j]:=1;
Num:=Num+1
end
end;
for i:=Num downto 2 do
for j:=2 to i do if Count[j-1]>Count[j] then
begin
t:=Count[j]; Count[j]:=Count[j-1]; Count[j-1]:=t;
s:=Names[j]; Names[j]:=Names[j-1]; Names[j-1]:=s;
end;
if Num >= 3 then Num := 3;
for i:=1 to Num do
WriteLn(Names[i], ' ', Count[i]);
end.
|
DIM N, Num, i, j, t AS INTEGER
DIM Count(12) AS INTEGER
DIM Names$(12)
Num = 0 'Число различных задач в списке запросов
INPUT N 'Считываем количество запросов
FOR i = 1 TO N
LINE INPUT s$ 'считали задачу
'Осуществляем поиск задачи в списке уже встретившихся
j = 1
WHILE (j <= Num) AND (s$ <> Names$(j))
j = j + 1
WEND
'Если задача найдена
IF j <= Num THEN 'Увеличиваем счетчик числа запросов
Count(j) = Count(j) + 1
ELSE ' Иначе добавляем задачу в конец списка
Names$(j) = s$
Count(j) = 1
Num = Num + 1
END IF
NEXT i
'Сортируем массивы Names и Count в порядке возрастания значений
'массива Count
FOR i = Num TO 2 STEP -1
FOR j = 2 TO i
IF Count(j - 1) > Count(j) THEN
t = Count(j): Count(j) = Count(j - 1): Count(j - 1) = t
s$ = Names$(j): Names$(j) = Names$(j - 1): Names$(j - 1) = s$
END IF
NEXT j
NEXT i
IF Num >= 3 THEN Num = 3
FOR i = 1 TO Num
PRINT Names$(i), Count(i)
NEXT i
END
|
Ваш ответ:
Вы пропустили вопрос