|
Напёрстки
(Время: 1 сек. Память: 16 Мб Сложность: 15%)
Для решения данной задачи смоделируем процесс действий шулера. Используем три целочисленные переменные x, y и z для хранения текущего положения шарика в левом, центральном и правом напёрстках соответственно. Нулевое значение переменных будет соответствовать отсутствию шарика, в противном случае значение будет установлено в 1. Очевидно, что x+y+z=1 (т.к. у нас только один шарик), а x+2*y+3*z – номер наперстка, под которым лежит шарик в текущий момент.
Для моделирования процесса первоначально можно считать последовательность действий шулера в некоторую строковую переменную s, и далее в цикле, пробегая по строке, выполнять действия по обмену содержимого напёрстков последовательно. Каждый обмен напёрстков местами будет сопровождаться обменом содержимого двух переменных, согласно одному из трех возможных действий. Таким образом, по завершении всех действий по значениям переменных x, y, z можно будет легко определить положение шарика.
Алгоритмическая реализация вышеописанного:
read(s)
x=1; y=z=0
for i=1..len(s){
if(s[i]=’A’) x <-> y
if(s[i]=’B’) y <-> z
if(s[i]=’C’) x <-> z
}
write(x+2*y+3*z)
| |