「Luogu2007」魔方
题目背景
常神牛从来没接触过魔方,所以他要借助计算机来玩。即使是这样,他还是很菜。
题目描述
常神牛家的魔方都是3*3*3的三阶魔方,大家都见过。
(更正:3 4以图为准。)
作为一名菜鸟,常神牛从网上搜了一篇攻略,并找人翻译成了他自己会做的方法。现在告诉你他的魔方情况,以及他从网上搜到的攻略,请你求出最后魔方变成什么样子。
(更正:3 4以图为准。)
作为一名菜鸟,常神牛从网上搜了一篇攻略,并找人翻译成了他自己会做的方法。现在告诉你他的魔方情况,以及他从网上搜到的攻略,请你求出最后魔方变成什么样子。
输入格式
输入文件为cube.out。
第一行,一串数字(长度不大于100),表示常神牛从网上搜到的攻略。
下面6*3行,每行3个数字,每三行表示魔方一个面的情况,六个面的顺序是前、后、左、右、上、下。
第一行,一串数字(长度不大于100),表示常神牛从网上搜到的攻略。
下面6*3行,每行3个数字,每三行表示魔方一个面的情况,六个面的顺序是前、后、左、右、上、下。
输出格式
输出文件为cube.out。
6*3行,表示处理后的魔方,形式同输入。
6*3行,表示处理后的魔方,形式同输入。
样例输入
23
121
221
111
123
321
111
123
321
132
132
231
132
121
112
233
332
111
333
样例输出
123
222
113
212
321
113
122
321
132
121
333
121
211
312
113
331
111
331
注释
「样例解释」
图中有误,是2操作
图中有误,是2操作
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#include<iostream> #include<cstdio> using namespace std; int a[7][4][4],b[4][4],t[4]; void cwface(int k) { for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) b[i][j]=a[k][i][j]; for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) a[k][i][j]=b[4-j][i]; } void rt() { for(int i=1;i<=3;i++)t[i]=a[1][i][3]; for(int i=1;i<=3;i++)a[1][i][3]=a[6][i][3]; for(int i=1;i<=3;i++)a[6][i][3]=a[2][i][3]; for(int i=1;i<=3;i++)a[2][i][3]=a[5][i][3]; for(int i=1;i<=3;i++)a[5][i][3]=t[i]; } void up() { for(int i=1;i<=3;i++)t[i]=a[1][1][i]; for(int i=1;i<=3;i++)a[1][1][i]=a[3][1][i]; for(int i=1;i<=3;i++)a[3][1][i]=a[2][1][i]; for(int i=1;i<=3;i++)a[2][1][i]=a[4][1][i]; for(int i=1;i<=3;i++)a[4][1][i]=t[i]; } void doit(int k) { if(k==1){cwface(4);rt();} if(k==2){for(int i=1;i<=3;i++)cwface(4);for(int i=1;i<=3;i++)rt();} if(k==3){cwface(5);up();} if(k==4){for(int i=1;i<=3;i++)cwface(5);for(int i=1;i<=3;i++)up();} } int main() { string str1,str2;cin>>str1; for(int i=1;i<=6;i++) for(int j=1;j<=3;j++) { cin>>str2; for(int k=0;k<3;k++) a[i][j][k+1]=str2[k]-'0'; } for(int i=0;i<str1.length();i++) { doit(str1[i]-'0'); } for(int i=1;i<=6;i++) for(int j=1;j<=3;j++) { for(int k=1;k<=3;k++) printf("%d",a[i][j][k]); printf("\n"); } return 0; } |
Subscribe