Var n, s: integer;
begin
n := 3;
s := 0;
while n <= 7 do begin
s := s + n;
n := n + 1
end;
write(s)
end.
Пояснение.
Цикл while выполняется до тех пор, пока истинно условие n <= 7, т. е. переменная n определяет, сколько раз выполнится цикл.
Запишем последовательно значения s и n:
s 0 3 7 12 18 25
n 3 4 5 6 7 8
Цикл выполнится пять раз (так как действие n := n + 1 стоит в конце цикла, следовательно, для n=8 действие s := s + n не будет выполняться).
Документ объёмом 6 Мбайт можно передать с одного компьютера на другой
двумя способами.
А. Сжать архиватором, передать архив по каналу связи, распаковать.
Б. Передать по каналу связи без использования архиватора.
При этом:
· скорость передачи данных по каналу связи составляет 222 бит в секунду;
· объём сжатого архиватором документа равен 50% от исходного;
· время, требуемое на сжатие документа, — 6 секунд, на распаковку — 2 секунды.
Какой способ быстрее и на сколько?
В ответе напишите букву А, если быстрее способ А, или Б, если быстрее способ Б. Сразу после буквы напишите, на сколько секунд один способ быстрее другого.
Например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать Б23.
Единицы измерения «секунд», «сек.», «с» и т. п. к ответу добавлять не нужно. Пояснение.
Общее время складывается из времени сжатия, распаковки и передачи. Время передачи t рассчитывается по формуле t = Q / q, где Q — объём информации, q — cкорость передачи данных.
Способ А. Найдём сжатый объём: 6 · 0,5 = 3 Мбайт. Переведём Q из Мбайт в биты: 3 Мбайт = 3 · 220 байт = 3 · 223 бит. Найдём общее время: t = 6 с + 2 с + 3 · 223 бит / 222 бит/с = 8 с + 6 с = 14 с.
Способ Б. Общее время совпадает с временем передачи: t = 6 · 223 бит / 222 бит/с = 12 с.
Таким образом, способ Б быстрее на 14 − 12 = 2 с.
Ответ: Б2.
Сколько существует различных символьных последовательностей длины от трёх до четырёх в четырёхбуквенном алфавите {A, C, G, T}? Пояснение.
Если в алфавите M символов, то количество всех возможных «слов» (сообщений) длиной N равно Q = MN. В нашем случае M = 4, а N = 3 или 4. Следовательно Q = 43 + 44 = 64 + 256 = 320.
Ответ: 320.
Ниже на пяти языках программирования записана рекурсивная функция (процедура) F.
Бейсик |
Python |
SUB F(n) PRINT n, IF n > 2 THEN F(n − 1) F(n − 2) F(n − 3) END IF END SUB |
def F(n): print (n, end='') if n > 2: F(n − 1) F(n − 2) F(n − 3) |
Паскаль |
Алгоритмический язык |
procedure F(n: integer); begin write(n); if n > 2 then begin F(n − 1); F(n − 2); F(n − 3) end end; |
алг F(цел n) нач вывод n если n > 2 то F(n − 1) F(n − 2) F(n − 3) все кон |
Си |
|
void F(int n ){ printf("%d", n); if (n > 2) { F(n − 1); F(n − 2); F(n − 3); } } |
|
Что выведет программа при вызове F(4)? В ответе запишите последовательность выведенных цифр слитно (без пробелов).
Пояснение.
Рассмотрим структуру вызова функций, очередность.
F(4) {
F(3) {
F(2)
F(1)
F(0)
}
F(2)
F(1)
}
Так как число печатается сразу при заходе в функцию, то порядок чисел будет совпадать с порядком вызовов.
Ответ:4321021
Если маска подсети 255.255.252.0 и IP-адрес компьютера в сети 226.185.90.162, то номер компьютера в сети равен_____ Пояснение.
1. Так как первые два октета (октет - число маски, содержит 8 бит) оба равны 255, то в двоичном виде они записываются как 16 единиц, а значит, первые два октета определяют адрес сети.
2. Запишем число 252 в двоичном виде:
Итого, последние два октета маски записываются как 11111100 00000000
3. Запишем последние два октета IP-адреса компьютера в сети:
Итого, последние два октета IP-адреса компьютера в сети записываются так: 01011010 10100010
4. Сопоставим последние октеты маски и адреса компьютера в сети:
11111100 00000000
01011010 10100010
Жирным выделена нужная нам часть. Переведем её в десятичную систему счисления:
Ответ:674
B некоторой стране автомобильный номер длиной 6 символов составляют из заглавных букв (используются только 33 различных буквы) и десятичных цифр в любом порядке. Каждый такой номер в компьютерной программе записывается минимально возможным и одинаковым целым количеством байтов (при этом используют посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством битов). Определите объём памяти, отводимый этой программой для записи 125 номеров. (Ответ дайте в байтах.) Пояснение.
Согласно условию, в номере могут быть использованы 10 цифр (0..9) и 33 буквы, всего 10 + 33 = 43 символов. Известно, что с помощью N бит можно закодировать 2N различных вариантов. Поскольку 25 < 43 < 26, то для записи каждого из 43 символов необходимо 6 бит.
Для хранения всех 6 символов номера нужно 6 * 6 = 36 бит, а т. к. для записи используется целое число байт, то берём ближайшее не меньшее значение, кратное восьми, это число 40 = 5 * 8 бит (5байт).
Тогда 125 номеров занимают 5 * 125 = 625 байт.
Небольшое дополнение
Почему берется наименьшее значение, кратное 8, если можно записать 4,5 байта?
Каждый номер кодируется целым числом байт.
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, включает в себя 4 команды-приказа и 4 команды проверки условия. Команды-приказы:
вверх |
вниз |
влево |
вправо |
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →.
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится, и программа прервётся.
Другие 4 команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:
сверху свободно |
снизу свободно |
слева свободно |
справа свободно |
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно. В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка A6)?
НАЧАЛО
ПОКА снизу свободно ИЛИ слева свободно
ЕСЛИ снизу свободно
ТО вниз
ИНАЧЕ влево
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Пояснение.
При выполнении данной программе РОБОТ поступает следующим образом: сперва РОБОТ проверяет, свободна ли клетка слева или снизу от него. Если это так, то РОБОТ переходит к первому действию внутри цикла. В этом цикле если у нижней стороны клетки, в которой находится РОБОТ, нет стены, он двигается вниз, в противном случае он перемещается влево. После этого возвращается к началу внешнего цикла. Проанализировав эту программу, приходим к выводу, что РОБОТ не может разбиться.
Проверив все клетки по выведенному нами правилу движения РОБОТА, выясняем, что число клеток, удовлетворяющих условию задачи равно 21: F1-F6, А6-F6, A3-A5, B1-B5, C1, C2.
Ответ:21
На рисунке изображена схема дорог, связывающих города A, B, C, D, E, F, G, H, K, L, M. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей из города A в город M?
Пояснение.
Начнем считать количество путей с конца маршрута – с города М. NX — количество различных путей из города А в город X, N — общее число путей.
В "М" можно приехать из G, H, F, K или L, поэтому N = NМ = NG + NH + NF + N К + N L (1)
Аналогично:
NG = NB + NC;
NH = NC + NF;
NF = NC + NА + ND;
NК = NF + ND + NE;
NL = NE.
Добавим еще вершины:
NB = NA + NC;
NC = NA = 1;
ND = NA= 1;
NE = NА + ND = 2.
Преобразуем вершины:
NB = NA + NC = 2;
NC = NA = 1;
ND = NA= 1;
NE = NА + ND = 2.
NG = NB + NC = 2 + 1 = 3;
NH = NC + NF = 1 + 3 = 4;
NF = NC + NА + ND = 1 + 1 + 1 = 3;
NК = NF + ND + NE = 3 + 1 + 2 = 6;
NL = NE = 2.
Подставим в формулу (1):
N = NМ = 3 + 4 + 3 + 6 + 2 = 18.
Ответ:18
В системе счисления с некоторым основанием десятичное число 57 записывается как 111. Укажите это основание. Пояснение.
Составим уравнение: 111n = 1 · n2 + 1 · n1 + 1 · n0 = 5710, где n — основание этой системы счисления. Уравнение n2 + n − 56 = 0 имеет два корня: 7 и −8. Таким образом, основание системы счисления — 7.
Ответ: 7.
В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для логической операции «И» - символ «&». В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет.
Запрос |
Найдено страниц (в тысячах) |
Швеция |
3200 |
Финляндия |
2300 |
Швеция & Финляндия |
100 |
Какое количество страниц (в тысячах) будет найдено по запросу Швеция | Финляндия?
Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.
Пояснение.
По формуле включений и исключений имеем:
m(Швеция | Финляндия) = m(Финляндия) + m(Швеция) - m(Швеция & Финляндия) = 3200 + 2300 - 100 = 5400.
На числовой прямой даны два отрезка: P = [3, 33] и Q = [22, 44]. Выберите такой отрезок A, что формула
(x ∈ Q) → ((x ∈ P) → (x ∈ A))
тождественно истинна, то есть принимает значение 1 при любом значении переменной х.
1) [2, 20]
2) [10, 25]
3) [20, 40]
4) [25, 30] Пояснение.
Введем обозначения:
(x ∈А) ≡ A; (x ∈ P) ≡ P; (x ∈ Q) ≡ Q.
Применив преобразование импликации, получаем:
Q → (P → A) ⇔ ¬Q ∨ (P → A) ⇔ ¬Q ∨ ¬P ∨ A.
Логическое ИЛИ истинно, если истинно хотя бы одно утверждение. Условие ¬Q ∨ ¬P = 1 истинно на множестве (−∞, 22) ∪ (33, ∞). Поскольку выражение ¬Q ∨ ¬P ∨ A должно быть тождественно истинным, выражение A должно быть истинным на отрезке [22, 33]. Из перечисленных отрезков только отрезок [20, 40] удовлетворяет этому условию.
Ответ:3
Значения элементов двумерного массива А были равны 0. Затем значения некоторых элементов были изменены (см. представленный фрагмент программы):
n := 0;
for i:=1 tо 5 do
for j:=1 tо 6-i do begin
n := n + 1;
A[i,j] := n;
end;
Какой элемент массива будет иметь в результате максимальное значение?
1) A[1,1]
2) A[1,5]
3) A[5,1]
4) A[5,5] Пояснение.
В переменной n накапливается сумма проходов цикла. Это число всё время растёт, следовательно, наибольшим элементом массива будет тот, значение которому будет присвоено последним. Это элемент A[5,1].
Ответ: 3
Ниже записана программа. Получив на вход число , эта программа печатает два числа, L и M. Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 8.
var x, L, M: integer;
begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:= L + 1;
if x mod 2 = 1 then
M:= M + x mod 10;
x:= x div 10;
end;
writeln(L); write(M);
end.
Пояснение.
Строчка L:= L + 1; в данной программе считает количество цифр в числе, значит число трехзначное.
При помощи команд if x mod 2 = 1 then M:= M + x mod 10; подсчитывается сумма всех цифр числа x, если оно нечётно. Наименьшее число, удовлетворяющее условию — 107.
Ответ:107
Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для вашего удобства алгоритм представлен на четырёх языках):
Бейсик |
Паскаль |
DIM A, B, T, M, R AS INTEGER A = -20: B = 20 M = A: R = F(A) FOR T = A TO B IF F(T) < R THEN M = T R = F(T) ENDIF NEXT T PRINT R FUNCTION F(x) F = 16 * (9 - x)* (9 - x) + 127; END FUNCTION |
var a,b,t,M,R :integer; Function F(x:integer):integer; begin F : = 16 * (9 - x)* (9 - x) + 127; end; begin a : = -20; b : = 20; 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<stdio.h> int F(int x) { return 16 * (9 - x)* (9 - x) + 127; } void main() { int a, b, t, M, R; a = -20; b = 20; M = a; R = F(a); for (t = a; t <= b; t++){ if (F(t) < R) { M = t; R = F(t); } } printf("%d", R); } |
алг нач цел a, b, t, R, M a : = -20; b : = 20 M : = a; R : = F(a) нц для t от a до b если F(t) < R то M : = t; R : = F(t) все кц вывод R кон алг цел F(цел x) нач знач : = 16 * (9 - x)* (9 - x) + 127 кон |
Пояснение.
1. Алгоритм ищет наименьшее значение функции F(t) на интервале от a до b.
2.
Имеем:
,
график этой функции – парабола,
ветви которой направлены
вверх, поэтому функция принимает
наименьшее значение в
вершине.
3. Найдем абсциссу вершины:
как видно, она лежит в нужном интервале.
4. Подставим
Ответ:127
У исполнителя Удвоитель две команды, которым присвоены номера:
