1. а) Картинки занимают 970 * 4 Мб = 3880 Мб, текст - 4096 * 256 * 64 * 16 бит = 2^12 * 2^8 * 2^6 * 2^4 бит = 2^30 бит = 2^7 Мб = 128 Мб (здесь учтено, что 1 Мб = 2^23 бит).
Полный объём 3880 Мб + 128 Мб = 4008 Мб
б) Объём флешки 4096 Мб, так что рукопись поместится.
2. Количество символов в алфавите 2^5 < 26 + 10 <= 2^6, поэтому на кодирование одного символа отводят 6 бит.
9 символов кодируются при бит = 54 бит, 6 байт = 48 бит < 54 бит <= 56 бит = 7 байт. Значит, на кодирование одного номера отводят 7 байт.
Тогда чтобы сохранить в памяти 110 номеров, нужно отвести 110 * 7 байт = 770 байт.
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
begin
var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;
a.Sorted.Println
end.
Тестовое решение:
n= 15
1 2 0 2 2 0 2 0 2 0 0 1 0 0 2
0 0 0 0 0 0 0 1 1 2 2 2 2 2 2
2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
const
nn=100;
var
i,j,n,t:integer;
a:array[1..nn] of integer;
begin
Write('n='); Read(n);
Randomize;
for i:=1 to n do begin
a[i]:=Random(3);
Write(a[i],' ')
end;
Writeln;
for i:=1 to n-1 do
for j:=1 to n-1 do
if a[j]>a[j+1] then begin
t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t
end;
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Тестовое решение:
n=15
0 1 1 0 2 1 0 2 1 2 1 0 0 2 0
0 0 0 0 0 0 1 1 1 1 1 2 2 2 2