Вариант 2

advertisement
Вариант 2
1) По каналу связи передаются сообщения, каждое из которых содержит 10 букв А, 5 букв Б, 20
букв В и 5 букв Г (других букв в сообщениях нет). Каждую букву кодируют двоичной
последовательностью. При выборе кода учитывались два требования:
а) ни одно кодовое слово не является началом другого (это нужно, чтобы код допускал
однозначное декодирование);
б) общая длина закодированного сообщения должна быть как можно меньше.
Какой код из приведённых ниже следует выбрать для кодирования букв А, Б, В и Г?
1) А:1, Б:01, В:001, Г:111
2) А:00, Б:01, В:10, Г:11
3) А:0, Б:10, В:11, Г:111
4) А:10, Б:111, В:0, Г:110
2) Дан фрагмент таблицы истинности для выражения F:
x1 x2 x3 x4 x5 x6 x7 F
0
1
1
0
0 0
0
1
0
Каким выражением может быть F?
1) x1  (x2  x3)  ¬x4  x5  x6  ¬x7
2) x1  (¬x2  x3)  ¬x4  ¬x5  x6  ¬x7
3) ¬x1  (x2  ¬x3)  x4  ¬x5  x6  x7
4) x1  (x2  ¬x3)  ¬x4  x5  ¬x6  x7
3) В каталоге находятся файлы со следующими именами:
chifera.dat
chifera.doc
ferrum.doc
deLafer.doc
oferta.doc
tokoferol.docx
Определите, по какой из масок будет выбрано ровно три файла:
1) *fer?*.d*
2) ?*fer*?.doc*
3) *?fer*?.doс
4)
?*fer?*.docx
4) В фрагменте базы данных представлены сведения о родственных отношениях. На
основании приведенных данных определите, сколько прямых потомков (то есть детей и
внуков) Кривич Л.П. упомянуто в таблице.
Таблица 1
ID
2146
2155
2431
2480
2302
2500
3002
2523
2529
2570
2586
2933
2511
3193
Фамилия_И.О.
Кривич Л.П.
Павленко А.К.
Хитрук П.А.
Кривич А.А.
Павленко Е.А.
Сокол Н.А.
Павленко И.А.
Павленко Т.Х.
Хитрук А.П.
Павленко П.И.
Павленко Т.И.
Симонян А.А.
Сокол В.А.
Биба С.А.
Таблица 2
Пол
ID_Родителя
ID_Ребенка
Ж
М
М
М
Ж
Ж
М
Ж
М
М
Ж
Ж
Ж
Ж
2146
2146
2155
2155
2302
2302
2302
3002
3002
2523
2523
2529
2529
2529
2302
3002
2302
3002
2431
2511
3193
2586
2570
2586
2570
2431
2511
3193
5) Укажите наименьшее четырёхзначное шестнадцатеричное число, двоичная запись которого
содержит ровно 6 нулей. В ответе запишите только само шестнадцатеричное число,
основание системы счисления указывать не нужно.
6) Между населёнными пунктами A, B, C, D, E, F построены дороги, протяжённость которых
приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между
пунктами нет.)
A
A
B
C
D
E
F
7
4
8
16
B
7
C
4
3
3
D
8
3
3
2
3
E
F
16
2
3
5
5
Определите длину кратчайшего пути между пунктами A и F, не проходящего через пункт
C (при условии, что передвигаться можно только по построенным дорогам).
7) Автомат получает на вход трёхзначное число. По этому числу строится новое число по
следующим правилам.
1. Складываются первая и вторая, а также вторая и третья цифры исходного числа.
2. Полученные два числа записываются друг за другом в порядке возрастания (без
разделителей).
Пример. Исходное число: 843. Суммы: 8 + 4 = 12; 4 + 3 = 7. Результат: 712.
Сколько существует чисел, в результате обработки которых автомат выдаст число 1216?
8) У исполнителя Аккорд две команды, которым присвоены номера:
1. прибавь x
2. умножь на 2
где x – неизвестное положительное число. Выполняя первую из них, Аккорд добавляет к
числу на экране x, а выполняя вторую, умножает это число на 2.
Программа для исполнителя Аккорд – это последовательность номеров команд.
Известно, что программа 12121 переводит число 4 в число 65. Определите значение x.
9) Дан фрагмент электронной таблицы. Из одной из ячеек диапазона B1:B4 в одну из ячеек
диапазона A1:A4 была скопирована формула. При этом адреса в формуле автоматически
изменились и числовое значение в ячейке, куда производилось копирование, стало равным
230. В какую ячейку была скопирована формула? В ответе укажите только одно число –
номер строки, в которой расположена ячейка.
А
В
С
D
Е
1
=D$1+$D1
1
10
100
2
=D$2+$D2
50
20
200
3
=D$3+$D3
150
30
300
4
=D$4+$D4
200
40
400
10) Дан фрагмент электронной таблицы:
А
В
C
12
???
=А1*4
1
=В1/A1
=C1/B1
=В2+A1/6
2
Какое целое число должно быть записано в ячейке B1, чтобы
построенная после выполнения вычислений диаграмма по
11)
12)
13)
14)
15)
значениям диапазона ячеек A2:С2 соответствовала рисунку?
Известно, что все значения диапазона, по которым построена
диаграмма, имеют один и тот же знак.
Запишите число, которое будет напечатано в результате выполнения следующей
программы:
var n, s: integer;
begin
n := 1;
s := 0;
while n <= 650 do begin
s := s + 20;
n := n * 5
end;
write(s)
end.
Производилась двухканальная (стерео) звукозапись с частотой дискретизации 64 кГц и 32битным разрешением. В результате был получен файл размером 60 Мбайт, сжатие данных
не производилось. Определите приблизительно, сколько времени (в минутах) проводилась
запись? В качестве ответа укажите ближайшее к времени записи целое число.
Данные объемом 60 Мбайт передаются из пункта А в пункт Б по каналу связи,
обеспечивающему скорость передачи данных 220 бит в секунду, а затем из пункта Б в пункт В
по каналу связи, обеспечивающему скорость передачи данных 223 бит в секунду. От начала
передачи данных из пункта А до их полного получения в пункте В прошло 10 минут. Сколько
времени в секундах составила задержка в пункте Б, т.е. время между окончанием приема
данных из пункта А и началом передачи данных в пункт В?
Сколько слов длины 4, начинающихся с согласной буквы и заканчивающихся гласной
буквой, можно составить из букв М, Е, Т, Р, О? Каждая буква может входить в слово
несколько раз. Слова не обязательно должны быть осмысленными словами русского языка.
Ниже записаны две рекурсивные процедуры, F и G:
procedure F(n: integer); forward;
procedure G(n: integer); forward;
procedure F(n: integer);
begin
writeln('*');
if n > 0 then begin
writeln('*');
G(n - 1);
end;
end;
procedure G(n: integer);
begin
writeln('*');
if n > 1 then begin
writeln('*');
F(n - 2);
end;
end;
Сколько символов «звёздочка» будет напечатано на экране при выполнении
вызова F(12)?
16) Два узла, находящиеся в одной сети, имеют IP-адреса 61.58.73.42 и 61.58.75.136.
Укажите наибольшее возможное значение третьего слева байта маски сети. Ответ
запишите в виде десятичного числа.
17) При регистрации в компьютерной системе каждому пользователю выдаётся пароль,
состоящий из 15 символов и содержащий только символы А, Б, В, Г, Д, Е. Каждый такой
пароль в компьютерной программе записывается минимально возможным и одинаковым
целым количеством байт, при этом используют посимвольное кодирование и все символы
кодируются одинаковым и минимально возможным количеством бит. Определите, сколько
байт необходимо для хранения 20 паролей.
18) Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде
линии. Чертёжник может выполнять команду Сместиться на (a, b) (где a, b – целые числа),
перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x + a, y
+ b). Чертёжнику был дан для исполнения следующий алгоритм:
Сместиться на (1, -3)
Повтори ... раз
Сместиться на (..., …)
Сместиться на (-1, -2)
конец
Сместиться на (-25, -33)
После выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое
наибольшее число повторений могло быть указано в конструкции «Повтори … раз»?
19) На рисунке – схема дорог, связывающих города А, Б, В, Г, Д, Е, К, Л, М, Н, П, Р, С, Т. По
каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько
существует различных путей, ведущих из города А в город Т?
К
П
Б
В
А
Г
Е
М
Н
С
Т
Д
Л
Р
20) Решите уравнение 104 x  20 x  8410 . Ответ запишите в двоичной системе счисления.
21) В таблице приведены запросы и количество страниц, которые нашел поисковый сервер по
этим запросам в некотором сегменте Интернета:
Количество страниц
Запрос
(тыс.)
Англия & (Уэльс & Шотландия | Ирландия)
450
Англия & Уэльс & Шотландия
213
Англия & Уэльс & Шотландия & Ирландия
87
Сколько страниц (в тысячах) будет найдено по запросу
Англия & Ирландия?
22) Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на
натуральное число m». Для какого наименьшего натурального числа А формула
(ДЕЛ(x, 15)  ¬ДЕЛ(x, 21))  (¬ДЕЛ(x, A)  ¬ДЕЛ(x, 15))
тождественно истинна (то есть принимает значение 1 при любом натуральном значении
переменной х)?
23) Ниже представлен фрагмент программы, обрабатывающей одномерный целочисленный
массив с индексами от 0 до 10. Известно, что в начале выполнения этого фрагмента в
массиве находилась возрастающая последовательность чисел, то есть A[0] < A[1] < … < A[10].
Какое наименьшее значение может иметь переменная s после выполнения данной
программы?
s := 32;
n := 10;
for i:=0 to n-1 do begin
s:=s+A[i+1]-A[i]+1
end;
24) Ниже записан алгоритм. Укажите наибольшее из таких чисел x , при вводе которых
алгоритм печатает сначала 4, а потом 13.
var x, a, b: integer;
begin
readln(x);
a := 0; b := 1;
while x > 0 do begin
a := a+2;
b := b*(x mod 1000);
x := x div 1000;
end;
writeln(a); write(b);
end.
25) При каком наибольшем значении входной переменной k программа выдаёт тот же ответ,
что и при входном значении k=60?
var k, i : longint;
function f(n: longint) : longint;
begin
f := 2*n*n - 30
end;
begin
readln(k);
i := 15;
while (i>0) and (f(i) >= k) do
i := i-1;
writeln(i)
end.
26) Исполнитель Калькулятор преобразует целое число, записанное на экране. У исполнителя
две команды, каждой команде присвоен номер:
1. Прибавь 1
2. Прибавь 2
Первая команда увеличивает число на экране на 1, вторая увеличивает – на 2. Сколько
существует программ, которые число 4 преобразуют в число 14 и в которых предпоследняя
команда 1?
27) Сколько различных решений имеет система уравнений?
(x1  x2)  (x2  x3)  (x3  x4)  (x4  x5)=1
(у1  у2)  (у2  у3)  (у3  у4)  (у4  у5)=1
(z1  z2)  (z2  z3)  (z3  z4)  (z4  z5)=1
x5  у5  z5 = 0
где x1,x2,…,x5, у1,у2,…,у5, z1,z2,…,z5 – логические переменные? В ответе не нужно
перечислять все различные наборы значений переменных, при которых выполнено данное
равенство. В качестве ответа нужно указать количество таких наборов.
28) Для заданного положительного вещественного числа A необходимо найти максимальное
целое число K, при котором выполняется неравенство 1 
1 1
1
     A . Для решения
2 3
K
этой задачи ученик написал такую программу:
var a, s: real;
k: integer;
begin
read(a);
k := 0;
s := 1;
while s < a do begin
k := k + 1;
s := s + 1.0/k;
end;
write(k);
end.
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 1.8.
2. Приведите пример числа, при вводе которого программа выведет правильный ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой
ошибки выпишите строку, в которой она допущена, и приведите эту же строку в
исправленном виде.
29) Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые
значения от –10 000 до 10 000 включительно. Опишите на естественном языке или на одном
из языков программирования алгоритм, позволяющий найти и вывести количество пар
элементов массива, в которых оба числа делятся на 3. В данной задаче под парой
подразумевается два подряд идущих элемента массива. Например, для массива из пяти
элементов: 6; 2; 9; –3; 6 – ответ: 2.
Паскаль
Алгоритмический язык
const
алг
N = 20;
нач
var
цел N = 20
a: array [1..N] of integer;
целтаб a[1:N]
i, j, k: integer;
цел i, j, k
begin
нц для i от 1 до N
for i := 1 to N do
ввод a[i]
readln(a[i]);
...
кц
end.
...
кон
30) Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может
а) добавить в кучу два камня или
б) увеличить количество камней в куче в три раза и затем добавить в кучу 2 камня.
Например, имея кучу из 10 камней, за один ход можно получить кучу из 12 или 32 камней. У
каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра
завершается в тот момент, когда количество камней в куче становится не менее 60.
Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу,
в которой будет 60 или больше камней.
В начальный момент в куче было S камней, 1 ≤ S ≤ 59.
1. При каких S: 1а) Петя выигрывает первым ходом; 1б) Ваня выигрывает первым
ходом?
2. Назовите все значения S, при которых Петя может выиграть своим вторым
ходом?
3. Назовите все значения S, при которых Ваня выигрывает своим первым или вторым
ходом.
31) На спутнике «Восход» установлен прибор, предназначенный для измерения солнечной
активности. Каждую минуту прибор передаёт по каналу связи неотрицательное целое число
– количество энергии солнечного излучения, полученной за последнюю минуту,
измеренное в условных единицах. Временем, в течение которого происходит передача,
можно пренебречь. Необходимо найти в заданной серии показаний прибора минимальное
нечётное произведение двух показаний, между моментами передачи которых прошло не
менее 6 минут. Если получить такое произведение не удаётся, ответ считается равным –1.
Количество энергии, получаемое прибором за минуту, не превышает 1000 условных единиц.
Общее количество показаний прибора в серии не превышает 10 000.
Задача А (2 балла). Напишите на любом языке программирования программу для
решения поставленной задачи, в которой входные данные будут запоминаться
в массиве, после чего будут проверены все возможные пары элементов.
Задача Б (4 балла). Напишите программу для решения поставленной задачи,
которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из
этих
характеристик).
Входные данные представлены следующим образом. В первой строке задаётся
число N – общее количество показаний прибора. Гарантируется, что N > 6. В каждой
из следующих N строк задаётся одно неотрицательное целое число – очередное
показание прибора.
Пример входных данных:
11
12
45
5
3
17
23
21
20
19
12
26
Программа должна вывести одно число – описанную в условии сумму.
Пример выходных данных для приведённого выше примера входных данных:
95
Ответы Вариант 2:
1
4
2
1
3
2
4
7
5 103F
6
11
7
6
8
7
9
3
10
24
11
100
12
2
13
60
14
150
15
17
16
252
17
120
18
12
19
44
20 1000
21
324
22
7
23
52
24 13001
25
68
26
55
27
91
28) Задача аналогична задача 57, поэтому приведем только решение с небольшими
комментариями.
1) при вводе числа 1.8 программа выведет число 1 (проверяется ручной прокруткой).
В программе сделано несколько ошибок, и в некоторых случаях они могут скомпенсировать
друг друга. Во-первых, цикл заканчивается, когда sa, то есть мы всегда находим k, которое
на единицу больше правильного значения. С другой стороны, перед циклом стоит два
присваивания:
k:= 0;
s:= 1;
Это значит, что значение k=1 мы уже включили в сумму, но значение переменной k ещё не
обновили. Проследим, как будет фактически изменяться значение переменной s из-за этой
ошибки:
1  1+1=2
s =
k=0
k=1
 2+1/2=2,5  2,5+1/3=2,833
k=2
k=3
А вот как нужно было (результат k=0 означает, что ни одного натурального k,
удовлетворяющего условию задачи, не существует):
1  1+1/2=1,5  1,5+1/3=1,833  1,833+1/4=2,083
s =
k=0
k=1
k=2
k=3
Представим эти данные на диаграмме:
k=0
k=2
фактически 
надо 
k=3
1,5
1
2
1,83 2,08 2,5
k=0
k=2
k=3
Из этой схемы видно, что при конечном значении s не более 1,5 программа выдаёт
правильный ответ!
2) При вводе числа 1.2 программа выводит правильный ответ.
3) В программе две ошибки:
a. Неверное присваивание:
Было: k:=0;
Исправление: k:=1;
b. Неверный вывод результата:
Было: write(k);
Исправление: write(k-1);
29) Решение аналогично решению задачи 44:
k := 0;
for i := 1 to N-1 do
if (a[i] mod 3 = 0) and
(a[i+1] mod 3 = 0) then
k := k + 1;
writeln(k);
30) Ответы на вопросы:
1а. для всех S от 20 до 59
1б. S = 18, 19
2. S = 16, 17
3. S = 14, 15
или так:
Было: s:=1;
Исправление: s:=0;
31) Эта задача аналогична предыдущим. Начальное значение переменной min нужно выбрать
таким, чтобы оно было больше, чем любое допустимое значение минимума. Поскольку все
числа не превышают 1000, можно выбрать это значение любым больше 1000*1000,
например, 1000001. Можно взять даже 1000000, поскольку это число чётное, то есть не может
быть правильным подходящим произведением.
Решение задачи А:
const d = 6;
var N: integer;
a: array[1..10000] of integer;
i, j, min: integer;
begin
readln(N);
for i:=1 to N do read(a[i]);
min:= 1000000; { 1000*1000 }
for i:= 1 to N-d do
for j:= i+d to N do
if (a[i]*a[j] mod 2 = 1) and
(a[i]*a[j] < min) then
min := a[i]*a[j];
if min = 1000000 then
writeln(-1)
else writeln(min)
end.
В задаче B есть одна особенность, связанная с дополнительным условием
(чётность/нечётность произведения). Дело в том, что минимальное нечётное произведение –
это всегда произведение двух нечётных чисел. Поэтому нужно искать минимальное нечётное
число из предыдущих, отстоящих не менее чем на 6 отсчётов (переменная m). Начальное
значение переменной m мы возьмем равным 10000 – это чётное значение; если оно
останется в переменной m, это будет означать, что предыдущего нечётного числа не было.
Минимум обновляется, если
а) только что прочитанное число x нечётное;
б) было найдено предыдущее нечётное число m;
в) произведение x*m меньше, чем ранее найденный минимум.
Решение задачи В:
const d = 6;
var N: integer;
a: array[0..d-1] of integer;
min, m, x, j, i: integer;
begin
readln(N);
for j:=0 to d-1 do read(a[j]);
min:= 1000000;
m:= 1000;
for j:= d to N-1 do begin
read(x);
if ((a[j mod d] mod 2 = 1) and
(a[j mod d] < m)) then m := a[j mod d];
if (x mod 2 = 1) and (m mod 2 = 1) and
(m*x < min) then min := m*x;
a[j mod d]:=x;
end;
if min = 1000000 then
writeln(-1)
else
writeln(min)
end.
Download