Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Напёрстки

(Время: 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)

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru