Var x,s:real; n:integer; function sum(a:real;k:integer):real; begin if k>1 then sum:=sum(a,k-1)+a/k; end; begin writeln('x = '); readln(x); writeln('n = '); readln(n); writeln('sum = ',sum(x,n)); end.
Берем третьи байты и переводим в двоичную систему счисления:добавим в начале нулей, чтобы получилось 8 цифр. ← ← найдем маску. запишем с столбик. если элементы одинаковые, ставим соответствующее число, если элементы разные, ставим крестик: 00000101 00011101 000xx101 ← маска т.к. по правилу в маске, сначала идут единицы, переместим их в начало: 11xx0000 если бы по условию, надо было бы найти наименьшее возможное значение, то мы бы заменяли крестики(х) на нули. т.к. по условию необходимо наибольшее возможное значение, подставляем вместо крестиков(x), единицу и переведем в десятичную систему счисления:
function sum(a:real;k:integer):real;
begin
if k>1 then sum:=sum(a,k-1)+a/k;
end;
begin
writeln('x = ');
readln(x);
writeln('n = ');
readln(n);
writeln('sum = ',sum(x,n));
end.
Пример:
x = 6
n = 4
sum = 6.5