НАЧАЛО
ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
заменить (01, 103)
заменить (02, 10)
заменить (03, 210)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начинается с цифры 0, а далее содержит 12 цифр 1, 15 цифр 2 и 17 цифр 3, расположенных в произвольном порядке.
Сколько цифр 2 будет в строке, которая получится после выполнения данной программы?
Решение
Пусть строка имеет вид
0 111111111111 222222222222222 33333333333333333
Тогда при первом проходе цикла 01 заменится на 103, Появилось 03, которое заменится на 210. Получится, что после прохода по всем единицам получится строка
121121…121 0 222222222222222 33333333333333333 где «121» будет 12 раз
И дальше 0 будет совмещаться с двойками. Получается, что 02 заменяется на 10, получаем строку
121121…121 101010…10 33333333333333333 где «121» будет 12 раз, «10» будет 15 раз и далее 0 совмещается с 3, где будет 17 раз присутствовать 2.
12112112112112112112112112112112112111111111111111121212121212121212121212121212121210
Получаем, что 2 может получиться только когда возникает ситуация 01 или 03. Таких вариантов возможно 12+17=29 раз.
Программа проверки
var s:string;
a,b:integer;
begin
s:='011111111111133333333333333333222222222222222';
while(pos('01',s)<>0)or(pos('02',s)<>0)or (pos('03',s)<>0) do
begin
a:=pos('01',s);
if a<>0 then begin
delete(s,a,2);
insert('103',s,a);end;
a:=pos('02',s);
if a<>0 then begin
delete(s,a,2);
insert('10',s,a);end;
a:=pos('03',s);
if a<>0 then begin
delete(s,a,2);
insert('210',s,a);end;
writeln(s);
end;
//writeln(s);
b:=0;
for a:=1 to length(s) do
if(s[a]='2')then b:=b+1;
writeln(b);
end.
Пошаговая работа программы
12101111111111133333333333333333222222222222222
1211210111111111133333333333333333222222222222222
121121121011111111133333333333333333222222222222222
12112112112101111111133333333333333333222222222222222
1211211211211210111111133333333333333333222222222222222
121121121121121121011111133333333333333333222222222222222
12112112112112112112101111133333333333333333222222222222222
1211211211211211211211210111133333333333333333222222222222222
121121121121121121121121121011133333333333333333222222222222222
12112112112112112112112112112101133333333333333333222222222222222
1211211211211211211211211211211210133333333333333333222222222222222
121121121121121121121121121121121121033333333333333333222222222222222
1211211211211211211211211211211211212103333333333333333222222222222222
12112112112112112112112112112112112121210333333333333333222222222222222
121121121121121121121121121121121121212121033333333333333222222222222222
1211211211211211211211211211211211212121212103333333333333222222222222222
12112112112112112112112112112112112121212121210333333333333222222222222222
121121121121121121121121121121121121212121212121033333333333222222222222222
1211211211211211211211211211211211212121212121212103333333333222222222222222
12112112112112112112112112112112112121212121212121210333333333222222222222222
121121121121121121121121121121121121212121212121212121033333333222222222222222
1211211211211211211211211211211211212121212121212121212103333333222222222222222
12112112112112112112112112112112112121212121212121212121210333333222222222222222
121121121121121121121121121121121121212121212121212121212121033333222222222222222
1211211211211211211211211211211211212121212121212121212121212103333222222222222222
12112112112112112112112112112112112121212121212121212121212121210333222222222222222
121121121121121121121121121121121121212121212121212121212121212121033222222222222222
1211211211211211211211211211211211212121212121212121212121212121212103222222222222222
12112112112112112112112112112112112121212121212121212121212121212121210222222222222222
12112112112112112112112112112112112121212121212121212121212121212121211022222222222222
12112112112112112112112112112112112121212121212121212121212121212121211102222222222222
12112112112112112112112112112112112121212121212121212121212121212121211110222222222222
12112112112112112112112112112112112121212121212121212121212121212121211111022222222222
12112112112112112112112112112112112121212121212121212121212121212121211111102222222222
12112112112112112112112112112112112121212121212121212121212121212121211111110222222222
12112112112112112112112112112112112121212121212121212121212121212121211111111022222222
12112112112112112112112112112112112121212121212121212121212121212121211111111102222222
12112112112112112112112112112112112121212121212121212121212121212121211111111110222222
12112112112112112112112112112112112121212121212121212121212121212121211111111111022222
12112112112112112112112112112112112121212121212121212121212121212121211111111111102222
12112112112112112112112112112112112121212121212121212121212121212121211111111111110222
12112112112112112112112112112112112121212121212121212121212121212121211111111111111022
12112112112112112112112112112112112121212121212121212121212121212121211111111111111102
12112112112112112112112112112112112121212121212121212121212121212121211111111111111110
12112112112112112112112112112112112121212121212121212121212121212121211111111111111110
29