Var
number: integer;
k: integer;
begin
repeat
write('number = ');
readln(number);
if number < 0 then k := k + 1;
until number = 0;
writeln('Кол-во отрицательных = ', k);
end.
0. 1
1. 10
2. 1001
3. 10010110
4. 1001011010010110
5. 10010110100101101001011010010110
После четвёртого шага я заметил, что наша строка состоит из подстрок "1001" и "0110". Количество таких подстрок после третьего шага начинает увеличиваться в два раза с каждым шагом. Например, в третьем шаге подстрока"10010110" - одна, а в четвёртом - две. Исходя из этого можно вынести, что в пятом шаге их - четыре (кто сомневается - проверьте). Составим таблицу, благодаря которой мы узнаем, сколько подстрок "10010110" будет в строке после одиннадцатого шага:
3. 1
4. 2
5. 4
6. 8
7. 16
8. 32
9. 64
10. 128
11. 512
После одиннадцатого шага строка будет иметь 512 подстрок "10010110" - то есть, состоять из 512 * 8 = 4096 символов. Это всего лишь отступление.
В одной подстроке "10010110" - 4 единицы. Значит, в 512 таких подстроках их будет 512 * 4 = 2048 штук.
Ответ: 2048.