問題
https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/11/ITP1_11_B (新しいタブで開く)
問題文
Dice I と同じ方法で、サイコロを作る。
上面と前面の数が与えられるので、右側の面の数を答えてね。
制約
サンプル
I/O 1
1 2 3 4 5 6
3
6 5
1 3
3 2
3
5
6
考察
全部チェックする。ハードコーディング。
(Dice
構造体を作って確認できるようにすればいいのに...)
コード
bool chk(const vector<int>& v, int& a, int& b) {
rep(i, 4) {
if (v[i % 4] == a && v[(i + 1) % 4] == b) return true;
}
return false;
}
int main() {
int dice[6];
rep(i, 6) cin >> dice[i];
int q;
cin >> q;
while (q--) {
int a, b;
cin >> a >> b;
a = find(dice, dice + 6, a) - dice + 1;
b = find(dice, dice + 6, b) - dice + 1;
if (chk({ 2, 3, 5, 4 }, a, b)) {
cout << dice[0] << endl;
}
if (chk({ 1, 4, 6, 3 }, a, b)) {
cout << dice[1] << endl;
}
if (chk({ 1, 2, 6, 5 }, a, b)) {
cout << dice[2] << endl;
}
if (chk({ 1, 5, 6, 2 }, a, b)) {
cout << dice[3] << endl;
}
if (chk({ 1, 3, 6, 4 }, a, b)) {
cout << dice[4] << endl;
}
if (chk({ 2, 4, 5, 3 }, a, b)) {
cout << dice[5] << endl;
}
}
return 0;
}