洛谷题解 CF777A 【Shell Game】

同步题解

\(QAQ\)


题目翻译(可能有童鞋没读懂题面上的翻译)

给你三张牌0,1,2。
最初选一张,然后依次进行n次交换,交换规则为:中间一张和左边的一张,中间一张和右边一张,中间一张和左边一张......
最后问牌x在哪个位置。

OK懂了吗?这就是样例中两个数的来历QAQ。

然后我们来找找规律:

我们可以发现:0,1,2这三个数可以经过变化变成如下的情况:

{0,1,2},{1,0,2},{1,2,0},{2,1,0},{2,0,1},{0,2,1},
//上为六种情况。
{0,1,2}
//最后一个循环。

我们把它预处理一下,再看看x对应的是哪一种组合,输出该组合的0/1/2即可;

话不多说,上代码!

#include<bits/stdc++.h>
using namespace std;
int a[10][5]={{0,1,2},{1,0,2},{1,2,0},{2,1,0},{2,0,1},{0,2,1}};		//六种情况
int mian()
{
	int n,m;
	cin>>n>>m;
	cout<<a[n%6][m]<<endl;		//n%6即为对应情况,m对应x。
	return 0;
}
posted @ 2019-02-03 20:40  Garbage-Only-One  阅读(511)  评论(0编辑  收藏  举报