Информатика → Юниорская → 2021 → 8 класс | BeyondOlympiads

В этой теме обсуждаем задачи junior олимпиады 2021 года

Это обсуждение публикации https://olympiads.bc-pf.org/informatics/junior/2021/8

Не понимаю задачу, можете пожалуйста помочь?

У тебя есть кубик с 6 цифрами. Изначальная расстановка: Слева 1, справа 6, спереди 2, сзади 5, сверху 3 и снизу 4. Человек начинает сдвигать значения кубика налево, направо, вверх, вниз, по часовой, против часовой.

Все операции не влияют на все части кубика. Сдвиг налево-направо не влияют на верхнюю и нижнюю часть, сдвиг вверх-вниз не влияют на правую и левую часть, а сдвиг по часовой - против часовой не влияют на переднюю и заднюю часть.

Пример: слева 1, справа 6, спереди 2, сзади 5. При операции “R”, значения сдвигаются на одну сторону вправо, то есть: слева 5, справа 2, спереди 1, сзади 6.

Решение
    string s;
	cin >> s;
	int u = 3, l = 1, r = 6, f = 2, b = 5, d = 4;
	for(int i = 0; i < s.size(); i++){
		if(s[i] == 'R'){
			swap(f, r);
			swap(f, b);
			swap(f, l);
		}
		if(s[i] == 'L'){
			swap(f, l);
			swap(f, b);
			swap(f, r);
		}
		if(s[i] == 'U'){
			swap(f, u);
			swap(f, b);
			swap(f, d);
		}
		if(s[i] == 'D'){
			swap(f, d);
			swap(f, b);
			swap(f, u);
		}
		if(s[i] == 'C'){
			swap(u, r);
			swap(u, d);
			swap(u, l);
		}
		if(s[i] == 'A'){
			swap(u, l);
			swap(u, d);
			swap(u, r);
		}
	}
	cout << u;
5 лайков

Да, спасибо огромное, я думал там сложнее решение гораздо (ну так как это респа, все дела, а на деле все так легко)))

1 лайк