Это несложно, надо делить-умножать на 1024 для перевода кило-мега, и на 8 для перевода биты-байты, и решать степенные уравнения
16^у Мбайт = 8^х бит 16^у = 8^х /8/1024^2 2^(4 y + 23) = 2^(3 x) y = (3 x)/4 - 23/4 целочисленные решения имеют вид x = 4 n + 1, y = 3 n - 5, n∈Z если при этом предположить, что в рпавой части равенства минимум должен быть минимум 1 бит, то минимальное целое x = 1 Первые решения 16^у Мбайт = 8^х бит 16^(-5) Мбайт = 8^1 бит 16^(-2) Мбайт = 8^5 бит 16^1 Мбайт = 8^9 бит 16^4 Мбайт = 8^13 бит 16^7 Мбайт = 8^17 бит 16^10 Мбайт = 8^21 бит Дальше ещё много решений :)
32^х Кбайт = 2^у Мбайт 32^х /1024 = 2^у 2^(y + 10) = 2^(5 x) y = 5 x - 10 и решения 32^0 Кбайт = 2^(-10) Мбайт 32^1 Кбайт = 2^(-5) Мбайт 32^2 Кбайт = 2^(0) Мбайт
Const n=10; var a:array[1..n] of integer; i,s,min:integer; begin writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=random(21)-10; write(a[i]:4); end; writeln; s:=0; min:=a[1]; for i:=1 to n do begin if a[i]>0 then s:=s+a[i]; if a[i]<min then min:=a[i]; end; writeln('s = ',s,' min = ',min); for i:=1 to n do if a[i]>0 then a[i]:=s else if a[i]<0 then a[i]:=a[i]-min; writeln('Измененный массив:'); for i:=1 to n do write(a[i]:4); writeln; end.
16^у Мбайт = 8^х бит
16^у = 8^х /8/1024^2
2^(4 y + 23) = 2^(3 x)
y = (3 x)/4 - 23/4
целочисленные решения имеют вид
x = 4 n + 1, y = 3 n - 5, n∈Z
если при этом предположить, что в рпавой части равенства минимум должен быть минимум 1 бит, то минимальное целое x = 1
Первые решения
16^у Мбайт = 8^х бит
16^(-5) Мбайт = 8^1 бит
16^(-2) Мбайт = 8^5 бит
16^1 Мбайт = 8^9 бит
16^4 Мбайт = 8^13 бит
16^7 Мбайт = 8^17 бит
16^10 Мбайт = 8^21 бит
Дальше ещё много решений :)
32^х Кбайт = 2^у Мбайт
32^х /1024 = 2^у
2^(y + 10) = 2^(5 x)
y = 5 x - 10
и решения
32^0 Кбайт = 2^(-10) Мбайт
32^1 Кбайт = 2^(-5) Мбайт
32^2 Кбайт = 2^(0) Мбайт
var a:array[1..n] of integer;
i,s,min:integer;
begin
writeln('Исходный массив:');
for i:=1 to n do
begin
a[i]:=random(21)-10;
write(a[i]:4);
end;
writeln;
s:=0;
min:=a[1];
for i:=1 to n do
begin
if a[i]>0 then s:=s+a[i];
if a[i]<min then min:=a[i];
end;
writeln('s = ',s,' min = ',min);
for i:=1 to n do
if a[i]>0 then a[i]:=s
else if a[i]<0 then a[i]:=a[i]-min;
writeln('Измененный массив:');
for i:=1 to n do write(a[i]:4);
writeln;
end.
Пример:
Исходный массив:
9 -3 -5 7 1 5 -6 9 -8 7
s = 38 min = -8
Измененный массив:
38 5 3 38 38 38 2 38 0 38