Алгоритм печатает сначала L, потом M. По программе понятно, что L Это количество раз, когда число не кратно 10 (каждый раз число делится на 10), а M - общее количество цифр. Понятно, что раз число должно быть наименьшее, а всего 8 цифр, значит может быть как минимум 4 нуля. Больше нулей быть не может, т.к. если в числе есть значимый ноль, то при делении он будет давать кратность десяти. 4 цифры уже есть, осталось подобрать 4 цифры, которые в числе при делении его на 10 не будут давать остаток 0. Это любые цифры от 1 до 9, но так как число минимальное, значит это цифры "1". Получается, 11110000. Переставляем цифры так, чтобы число было минимальное и получается 10000111.
ответ: 10000111
program DecToBinCount;
uses
SysUtils, StrUtils;
function DecToBin (m: Integer): string;
var
r: Integer;
s: string;
begin
while (m > 0) do Begin
r := m mod 2;
m := m div 2;
s := IntToStr (r) + s;
end;
Result := s;
end;
var
m, n, x, i, c: Integer;
s: string;
begin
Write ('Введите M, N, X: ');
ReadLn (m, n, x);
WriteLn;
c := 0;
for i := m to n do begin
s := DecToBin (i);
if RightStr (s, x) = StringOfChar ('0', x) then begin
WriteLn (s, ' '); // для проверки. после тестирования закомментарить
Inc (c);
end;
end;
WriteLn (c);
ReadLn;
end.