Для целесообразности вместо корня из 1 заранее используется 1 (поскольку нет нужды вычислять).
--- КОД ПРОГРАММЫ НИЖЕ ---
// Проверено в PascalABC.NET (версия 3.2, сборка 1363)
program zz; var n, i, u, d, f, c, ff, cc: integer; y: real; procedure GetDiv(); begin ff := f; cc := c; d := 0; while cc > 0 do begin d := d + ff; ff := ff + 1; cc := cc - 1; end; end; function Facto(num: integer): integer; var ff, fi: integer; begin ff := 1; for fi := 2 to num do ff := ff * fi; Facto := ff; end; begin write('n = '); readln(n); y := 0; f := 2; c := 2; for i := 1 to n do begin u := Facto( n - (i - 1) ); if i = 1 then d := 1 else begin GetDiv(); f := ff + 1; c := c + 1; end; y := y + (u / d); end; writeln('y = ', y); end.
Все задачи однотипные, нужно знать понятия глубины цвета и как расчитывается объём для растрового изображения. 1.всего пикселей 128*128= 2^14(2 в 14-ой степени) так как 32 цвет, то один символ кодируется 5 битами (log2(32), если бы было 33 цвета то уже бы потребовалось 6 бит, так как 5 бы не хватило). Нам нужно в килобайтах значит нужно разделить на 2^13 (т.к. в 1 кбайте 2^13 бит)
--- КОД ПРОГРАММЫ НИЖЕ ---
// Проверено в PascalABC.NET (версия 3.2, сборка 1363)
program zz;
var
n, i, u, d, f, c, ff, cc: integer;
y: real;
procedure GetDiv();
begin
ff := f;
cc := c;
d := 0;
while cc > 0 do
begin
d := d + ff;
ff := ff + 1;
cc := cc - 1;
end;
end;
function Facto(num: integer): integer;
var
ff, fi: integer;
begin
ff := 1;
for fi := 2 to num do
ff := ff * fi;
Facto := ff;
end;
begin
write('n = ');
readln(n);
y := 0;
f := 2;
c := 2;
for i := 1 to n do
begin
u := Facto( n - (i - 1) );
if i = 1 then
d := 1
else
begin
GetDiv();
f := ff + 1;
c := c + 1;
end;
y := y + (u / d);
end;
writeln('y = ', y);
end.