Решение задачи Напёрстки с Acmp

Без пояснения   Просмотров: 43


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

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

Код

#include <iostream>
 
using namespace std;
 
int main()
{
    int n1,n2,n3;
    n1 = 1;
    n2 = 2;
    n3 = 3;
    string str;
    cin >> str;
    for(int i = 0; i <str.size(); ++i){
        if(str[i]=='A'){
            n1 = n1 ^ n2;
            n2 = n1 ^ n2;
            n1 = n1 ^ n2;
        }
        if(str[i]=='B'){
            n3 = n3 ^ n2;
            n2 = n3 ^ n2;
            n3 = n3 ^ n2;
        }
        if(str[i]=='C'){
            n1 = n1 ^ n3;
            n3 = n1 ^ n3;
            n1 = n1 ^ n3;
        }
    }
    if(n1==1)
        cout << 1;
    if(n2==1)
        cout << 2;
    if(n3==1)
        cout << 3;
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться