// PascalABC.NET 3.1, сборка 1201 от 18.03.2016 begin var k:=0; var n:=ReadInteger(); var nmax:=0; while n<>0 do begin Inc(k); if n mod 10 = 0 then if n>nmax then nmax:=n; n:=ReadInteger() end; var cntrl:=ReadInteger(); Writeln('Получено ',k,' чисел'); Writeln('Полученное контрольное значение: ',cntrl); Writeln('Вычисленное контрольное значение: ',nmax); if cntrl=nmax then Writeln('Контроль пройден') else Writeln('Контроль не пройден') end.
Попытка поиска выигрышной стратегии может быть сделана при метода, получившего название "бэкрекинг" (backtracking - обратное прослеживание). Рассматриваем финальную позицию для второго студента. У него должно оставаться от 1 до 4 карточек, чтобы он мог их все забрать и не оставить карточек первому студенту. Следовательно, у первого студента должно быть ровно 5 карточек. Забрав от 1 до 4 карточек, он оставит второму студенту как раз требуемое количество карточек. Чтобы у первого студента осталось 5 карточек, второй студент должен иметь от 6 до 9 карточек, т.е. первый студент для этого должен делать выбор из 10 карточек. И так далее. Выигрышная стратегия второго студента состоит в том, чтобы предоставлять первому студенту количество карточек, кратное 5. Но исходное количество карточек равно 20; это число кратно 5, следовательно второй студент всегда выигрывает, применяя описанную стратегию (она же - алгоритм).
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку