Дерево игры - в прилагаемом файле. У игрока, делающего ход первым (Пети) есть выигрышная стратегия: первый ход должен быть +3 (в куче получится 13 камней). В этом случае при ходе второго игрока (Вани) +3 (в куче 16 камней) первый (Петя) выигрывает ходом *2 (в куче 32 камня); при ходе второго игрока (Вани) *2 (в куче 26 камней) первый (Петя) также выигрывает ходом *2 (в куче 52 камня). Второй игрок (Ваня) может выиграть только в случае, если первый (Петя) сделает начальный ход *2 (в куче 20 камней), следующий ход (Вани) *2 (в куче 40 камней) приводит к выигрышу.
Дерево игры - в прилагаемом файле. У игрока, делающего ход первым (Пети) есть выигрышная стратегия: первый ход должен быть +3 (в куче получится 13 камней). В этом случае при ходе второго игрока (Вани) +3 (в куче 16 камней) первый (Петя) выигрывает ходом *2 (в куче 32 камня); при ходе второго игрока (Вани) *2 (в куче 26 камней) первый (Петя) также выигрывает ходом *2 (в куче 52 камня). Второй игрок (Ваня) может выиграть только в случае, если первый (Петя) сделает начальный ход *2 (в куче 20 камней), следующий ход (Вани) *2 (в куче 40 камней) приводит к выигрышу.
uses crt;
const raz=[' ','.',',','?','!'];{/разделители слов, можно добавить}
var s,sl:string;
i,k:byte;
begin
clrscr;
writeln('Строка:');
readln(s);
writeln('Слово:');
readln(sl);
k:=0;
for i:=1 to length(s) do{идем по строке}
if(s[i]=sl[1])and((s[i-1] in raz)or(i=1)){если символ равен первому символу слова
а перед ним разделитель или начало строки}
and((s[i+length(sl)] in raz)or(i+length(sl)=length(s))){и после слова разделитетль или конец строки}
and(copy(s,i,length(sl))=sl){и все буквы на интервале равны слову}
then k:=k+1;{считаем}
write('Слово ',sl,' встречается ',k,' рз.');
readln
end.
Объяснение:
на каком языке? (В ответе паскаль)