洛谷题解 CF777A 【Shell Game】

同步题解

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

给你三张牌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;
}

猜你喜欢

转载自www.cnblogs.com/Garbage-Only-one/p/10350970.html
今日推荐