. на питоне Игра с нулями и единицами
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Что еще мы вам не рассказали про строки из нулей и единиц? :)
Оказывается, со строкой из нулей и единиц можно играть. Петя и Вася берут случайную строку
длины n и играют в игру по следующим правилам. Петя ходит первым и может зачеркнуть единицу
на крайнем левом или крайнем правом месте строки (если по краям строки стоят нули, то Петя сразу
проиграл). Вася ходит вторым, и в оставшейся строке он может зачеркнуть на первом или последнем
месте строки ноль, если он там есть, иначе он проиграл. Далее мальчики продолжают ходить по
очереди по этим правилам, пока кто-нибудь не проиграет, так как не сможет сделать очередной ход.
Другой игрок при этом наберет одно очко + столько очков, сколько составит длина оставшейся
строки. Если проигравшему игроку достаётся пустая строка, то игрок, сделавший последний ход,
выигрывает со счётом 1. Каждый из игроков хочет выиграть и набрать при этом как можно больше
очков.
Предположим, например, что они играют со следующей строкой: 10100011. В свой первый ход
Петя может удалить крайнюю левую или крайнюю правую единицу. Предположим, он выбирает
крайнюю левую. Тогда строка станет 0100011. Тогда Васе не останется ничего другого, как убрать
новый крайний левый ноль, так как крайний правый символ единица, и останется строка 100011.
Петя снова может выбирать, и на этот раз он выбирает крайнюю правую единицу, оставляя 10001
Васе. На данный момент у Васи нет подходящего хода, поэтому победил Петя. Поскольку длина
оставшейся строки 5, Петя побеждает со счётом 1 + 5 = 6 очков. Но если бы Петя первым ходом
вычеркнул последнюю единицу, то ходов у Васи больше не было, и Петя бы выиграл со счётом
1 + 7 = 8.
Требуется написать программу, которая по строке из нулей и единиц определит, кто выиграет
при оптимальной игре обоих, и сколько очков он при этом наберёт.
Формат входных данных
В единственной строке входных данных находится непустая строка из нулей и единиц, длина
которой не превосходит 10.
Формат выходных данных
Выведите сначала символ 1, если при оптимальной игре обоих игроков выиграет Петя, или
символ 0, если выиграет Вася. Затем через пробел выведите, сколько очков наберёт победивший
игрок.
Примеры
стандартный ввод стандартный вывод
01 0 1
100 0 2
10100011 1 8
1) Федеральный закон от 20 февраля 1995 г. № 24-ФЗ "Об информации, информатизации и защите информации" (в ред. от 10 января 2003 г.) // СЗ РФ. 1995. № 8. Ст. 609.
2) Кодекс РФ об административных правонарушениях (действ. ред.).
3) Уголовный кодекс РФ (в ред. от 8 апреля 2003 г.).
4) Таможенный кодекс РФ (с изм. от 23 декабря 2003 г.).
5) Федеральный закон от 27 мая 1996 г. № 57-ФЗ "О государственной охране" (в ред. от 30 июня 2003 г.).
6) Закон РФ от 21 июля 1993 г. № 5485-1 "О государственной тайне" (в ред. от 11 ноября 2003 г.).
7) Закон РФ от 27 декабря 1991 г. № 2124-1 "О средствах массовой информации" (в ред. от 8 декабря 2003 г.).
Объяснение:
1. Безусловный цикл
loop <количество повторений> do
begin
<тело цикла>
end;
2. Цикл с предусловием
while <условие> do
begin
<тело цикла>
end;
3. Цикл с постусловием
repeat
<тело цикла>
until
<условие выхода>
4. Цикл со свободным выходом
loop <количество повторений> do
begin
<часть тела цикла>
if <условие выхода> then break;
<часть тела цикла>
end;
5. Цикл со счетчиком (итератором)
for var <переменная> := <стартовое число> to <конечное число> do
begin
<тело цикла>
end;