题解 CF777A 【Shell Game】

⚡GG⚡

2019-02-03 20:39:39

Solution

# [同步题解](https://www.cnblogs.com/Garbage-Only-one/p/10350970.html) ### 题目翻译(可能有童鞋没读懂题面上的翻译) https://www.cnblogs.com/Garbage-Only-one/p/10350970.html) >给你三张牌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`即可; ## 话不多说,上代码! ```cpp #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; } ```