Если бы я был организатором производства печенья, то сначала потратил бы дни на приобретение 8 духовок, на это ушло бы 8 * 6 = 48 дней. Потом с помощью 8 духовок и 1 пары рук за 60 дней сделал бы 540 пачек печенья. Итого, 108 дней и 540 пачек, из которых 8 сверхплановых можно кому-нибудь подарить.
Кто быстрее, ребята?
Сначала нужно определить количество бит, которое требуется для сохранения одного номера. Всего 220 уникальных номеров. Количество бит вычисляется по формуле 2^n = k, где n - биты, а k - варианты, которые этими битами можно закодировать.
7 бит недостаточно для хранения 220 номеров, т.к. 2^7 = 128
8 бит достаточно, т.к. 2^8 = 256. То есть на одного спортсмена выделяется 8 бит, или 1 байт.
Всего участвовало 100 спортсменов, 100*1байт = 100байт
Const n=10;
var a,d:array[1..n] of integer;
k,i,j,t:integer;
begin
Randomize;
for i:=1 to n do begin
a[i]:=random(900)+100;
write(a[i]:4);
end;
writeln;
writeln('Количество делителей:');
for i:=1 to n do begin
k:=2;
for j:=2 to a[i] div 2 do
if a[i] mod j = 0 then k:=k+1;
d[i]:=k;
write(d[i]:4);
end;
writeln;
for i:=1 to n-1 do
for j:=1 to n-i do
if d[j]>d[j+1] then
begin
t:=d[j]; d[j]:=d[j+1]; d[j+1]:=t;
t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t;
end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln
end.
Пример:
882 524 890 505 911 792 772 458 507 368
Количество делителей:
18 6 8 4 2 24 6 4 6 10
Отсортированный массив:
911 505 458 524 772 507 890 368 882 792
Перевод из 10-ой в 16-ю (8-ю) выполняется делением на 16 (8) и выписыванием остатков
64010(10) = FA0A(16)
<span>64010(10) = 175012(8)</span>