Алгоритм печатает сначала L, потом M. По программе понятно, что L Это количество раз, когда число не кратно 10 (каждый раз число делится на 10), а M - общее количество цифр. Понятно, что раз число должно быть наименьшее, а всего 8 цифр, значит может быть как минимум 4 нуля. Больше нулей быть не может, т.к. если в числе есть значимый ноль, то при делении он будет давать кратность десяти. 4 цифры уже есть, осталось подобрать 4 цифры, которые в числе при делении его на 10 не будут давать остаток 0. Это любые цифры от 1 до 9, но так как число минимальное, значит это цифры "1". Получается, 11110000. Переставляем цифры так, чтобы число было минимальное и получается 10000111.
ответ: 10000111
begin
var n:=ReadInteger('n=');
var r:BigInteger:=1;
for var i:=1 to n do begin
r*=2; Writeln(i,' - ',r)
end
end.
Тестовое решение:
n= 50
1 - 2
2 - 4
3 - 8
4 - 16
5 - 32
6 - 64
7 - 128
8 - 256
9 - 512
10 - 1024
11 - 2048
12 - 4096
13 - 8192
14 - 16384
15 - 32768
16 - 65536
17 - 131072
18 - 262144
19 - 524288
20 - 1048576
21 - 2097152
22 - 4194304
23 - 8388608
24 - 16777216
25 - 33554432
26 - 67108864
27 - 134217728
28 - 268435456
29 - 536870912
30 - 1073741824
31 - 2147483648
32 - 4294967296
33 - 8589934592
34 - 17179869184
35 - 34359738368
36 - 68719476736
37 - 137438953472
38 - 274877906944
39 - 549755813888
40 - 1099511627776
41 - 2199023255552
42 - 4398046511104
43 - 8796093022208
44 - 17592186044416
45 - 35184372088832
46 - 70368744177664
47 - 140737488355328
48 - 281474976710656
49 - 562949953421312
50 - 1125899906842624