Попытка поиска выигрышной стратегии может быть сделана при помощи метода, получившего название "бэкрекинг" (backtracking - обратное прослеживание).
Рассматриваем финальную позицию для второго студента. У него должно оставаться от 1 до 4 карточек, чтобы он мог их все забрать и не оставить карточек первому студенту. Следовательно, у первого студента должно быть ровно 5 карточек. Забрав от 1 до 4 карточек, он оставит второму студенту как раз требуемое количество карточек.
Чтобы у первого студента осталось 5 карточек, второй студент должен иметь от 6 до 9 карточек, т.е. первый студент для этого должен делать выбор из 10 карточек.
И так далее. Выигрышная стратегия второго студента состоит в том, чтобы предоставлять первому студенту количество карточек, кратное 5.
Но исходное количество карточек равно 20; это число кратно 5, следовательно второй студент всегда выигрывает, применяя описанную стратегию (она же - алгоритм).
===== PascalABC.NET =====
begin
var a := ReadArrInteger(5);
a.Println
end.
Program prog;
Uses crt;
var a: array [1..5] of integer;
i,k: integer;
begin
clrscr;
for i:=1 to 5 do
begin
write('a[',i,'] = ');
readln(a[i]);
if (a[i]<>0) then
inc(k);
end;
writeln;
write('k = ', k);
end.
Нужно нажать одновременно Cntrl+Alt+Delete
3 слова будут выделены полужирным (b) курсивом (i).
"Кит", "Море знаний"
Правильный ответ под буквой В