На рисунке изображён логический диск, разделённый на кластеры. Размер каждого кластера составляет 16 Кбайт. Используемые кластеры — серые, свободные кластеры — белые.
На диск требуется записать файлы: файл А размером 20 Кбайт, затем файл В размером 30 Кбайт, затем файл С размером 65 Кбайт, и наконец — файл D размером 60 Кбайт.
Операционная система для хранения каждого файла пытается искать смежные (соседние) свободные кластеры, чтобы избежать фрагментации файла — рассеивания содержимого файла по диску, приводящего к уменьшению производительности.
В какие кластеры может быть записано содержимое файлов при соблюдении этого условия?
1.1. Валерий будет третьим. 1.2. Василий будет первым.
2.1. Сергей будет вторым. 2.2. Валерий будет третьим.
3.1. Андрей будет первым. 3.2. Сергей будет третьим.
Допустим, 1.1 истинно, тогда 1.2 ложно.
Если 1.1 истинно, то истинно и 2.2, тогда 2.1 ложно.
Если 1.1. истинно, то 3.2. ложно, тогда 3.1. истинно.
Получаем распределение мест: Валерий третий (1.1.), Андрей первый (3.1.), Сергей не второй, следовательно, второй Василий (методом исключения).
Противоречий нет.
Проверим альтернативный вариант.
Допустим, 1.1. ложно, тогда 1.2. истинно.
Если 1.1. ложно, то и 2.2. ложно, тогда 2.1. истинно.
Если 2.1. истинно, то 3.2 ложно, тогда 3.1 истинно.
Но истинные 1.2. и 3.1. противоречат друг-другу, следовательно наше допущение неверно и 1.1. ложным быть не может.
Окончательно: Андрей первый, Василий второй, Валерий третий, Сергей четвертый (во всяком случае, не вошел в первую тройку).
n = 10;
var
x: array[1..n] of integer;
i: integer;
flag: boolean;
begin
Randomize;
Write('Элементы массива: ');
for i := 1 to n do
begin
x[i] := Random(10000);
Write(x[i]:5)
end;
i := 1; flag := false;
while (i <= n) and (not flag) do
begin
flag := (x[i] >= 99) and (x[i] <= 1000);
if (not flag) then i := i + 1
end;
Writeln;
if flag then Writeln('Найден элемент: ', x[i])
else Writeln('Искомого числа нет')
end.
Тестовое решение:
Элементы массива: 4136 4921 244 1489 1714 5731 4187 7990 1974 113
Найден элемент: 244
const
n = 13;
var
x: array[1..n] of integer;
i: integer;
flag: boolean;
begin
Randomize;
Write('Элементы массива: ');
for i := 1 to n do
begin
x[i] := Random(101) - 50;
Write(x[i]:4)
end;
i := n;
flag := false;
while (i > 0) and (not flag) do
begin
flag := (x[i] >= -10) and (x[i] <= 20) and (x[i] mod 3 = 0);
if (not flag) then i := i - 1
end;
Writeln;
if flag then Writeln('Найден элемент: ', x[i])
else Writeln('Искомого числа нет')
end.
Тестовое решение:
Элементы массива: 21 -45 -12 9 -36 42 -49 -48 37 48 -43 26 -34
Найден элемент: 9
var
n: longint;
s: string;
k, er: integer;
begin
Write('Введите натуральное число-> '); Readln(n);
Str(n, s);
Val(s[1], k, er);
if (k mod 2 = 0) then Writeln('Первая цифра числа четная')
else Writeln('Первая цифра числа нечетная')
end.
Тестовое решение:
Введите натуральное число-> 36434523
Первая цифра числа нечетная
function NOD(a, b: integer): integer;
begin
while a <> b do
if a > b then a := a - b
else b := b - a;
NOD := a
end;
var
a, b, c: integer;
begin
Write('Введите через пробел три целых числа: '); Readln(a, b, c);
Writeln('НОД(a,b)+НОД(b,c)=', NOD(a, b) + NOD(b, c))
end.
Тестовое решение:
Введите через пробел три целых числа: 2048 512 4262
НОД(a,b)+НОД(b,c)=514