Информация о задаче

Автор, источник

 

Олимпиада

Муниципальный этап олимпиады в Ханты-Мансийском АО-Югре, 2009-2010 уч. год, 7-9 классы, 1-й тур

Тематика

Математическое моделирование

Примерная сложность

15%

Ссылки в Интернете

Условие –

Разбор –

Тесты –

Сдача решения –

Наш сайт

Сдача решения –

Тесты – Rar

Задача подготовлена

Автор, дата –  Алексеев А.В., 24.05.2012

 

025. Напёрстки

(Время - 1 сек., память - 16 Мб)

Шулер показывает следующий трюк. Он имеет три одинаковых наперстка. Под первый (левый) он кладет маленький шарик. Затем он очень быстро выполняет ряд перемещений наперстков, каждое из которых – это одно из трех перемещений - A, B, C:

Необходимо определить, под каким из наперстков окажется шарик после всех перемещений.

Входные данные

В единственной строке входного файла input.txt записана записана строка длиной не более 50 символов из множества {A, B, C} – последовательность перемещений.

Выходные данные

В единственную строку выходного файла output.txt нужно вывести номер наперстка, под которым окажется шарик после перемещений.

Пример

input.txt

output.txt

1

CBABCACCC

1

Разбор

Введём три переменные x, y, z, которые будут обозначать факт нахождения шарика (значение переменной равно единице) в левом, среднем и правом напёрстках. Вначале x=1, y=z=0. Далее обрабатываем заданные перемещения напёрстков, меняя значения соответствующих переменных.

Программа на Паскале

Var x, y, z, u, i : integer; s : string;

begin

  assign(input,'input.txt'); reset(input);

  assign(output,'output.txt'); rewrite(output);

  readln(s); x:=1; y:=0; z:=0;

  for i:=1 to length(s) do

    case s[i] of

      'A' : begin u:=x; x:=y; y:=u end;

      'B' : begin u:=y; y:=z; z:=u end;

      'C' : begin u:=x; x:=z; z:=u end;

    end;

  if x=1 then write(1); if y=1 then write(2); if z=1 then write(3);close(output)

end.

Программа на С