首页 > 代码库 > NOIP2016模拟 拼接mf(模拟)
NOIP2016模拟 拼接mf(模拟)
1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long LL; 4 const int MAX=10; 5 char n[105]; 6 struct Cube{ 7 int c[MAX][MAX][MAX];//前 后 左 右 上 下 8 void out(){ 9 int i,j,k; 10 for (i=1;i<=6;i++){ 11 for (j=1;j<=3;j++){ 12 for (k=1;k<=3;k++) 13 printf("%d",c[i][j][k]); 14 printf("\n"); 15 } 16 } 17 } 18 void work1(){ 19 int i,j,k,h; 20 int a[MAX],vv[MAX][MAX]; 21 a[1]=c[1][1][3],a[2]=c[1][2][3],a[3]=c[1][3][3]; 22 c[1][1][3]=c[6][1][3],c[1][2][3]=c[6][2][3],c[1][3][3]=c[6][3][3];//下→前 23 c[6][1][3]=c[2][1][3],c[6][2][3]=c[2][2][3],c[6][3][3]=c[2][3][3];//后→下 24 c[2][1][3]=c[5][1][3],c[2][2][3]=c[5][2][3],c[2][3][3]=c[5][3][3];//上→后 25 c[5][1][3]=a[1],c[5][2][3]=a[2],c[5][3][3]=a[3];//前→上 26 for (k=1;k<=3;k++) 27 for (h=1;h<=3;h++) 28 vv[k][h]=c[4][k][h]; 29 c[4][1][3]=vv[1][1],c[4][2][3]=vv[1][2],c[4][3][3]=vv[1][3]; 30 c[4][1][2]=vv[2][1],c[4][2][2]=vv[2][2],c[4][3][2]=vv[2][3]; 31 c[4][1][1]=vv[3][1],c[4][2][1]=vv[3][2],c[4][3][1]=vv[3][3]; 32 } 33 void work2(){ 34 int i,j,k,h; 35 int a[MAX],vv[MAX][MAX]; 36 for (i=1;i<=3;i++){ 37 a[1]=c[1][1][3],a[2]=c[1][2][3],a[3]=c[1][3][3]; 38 c[1][1][3]=c[6][1][3],c[1][2][3]=c[6][2][3],c[1][3][3]=c[6][3][3];//下→前 39 c[6][1][3]=c[2][1][3],c[6][2][3]=c[2][2][3],c[6][3][3]=c[2][3][3];//后→下 40 c[2][1][3]=c[5][1][3],c[2][2][3]=c[5][2][3],c[2][3][3]=c[5][3][3];//上→后 41 c[5][1][3]=a[1],c[5][2][3]=a[2],c[5][3][3]=a[3];//前→上 42 for (k=1;k<=3;k++) 43 for (h=1;h<=3;h++) 44 vv[k][h]=c[4][k][h]; 45 c[4][1][3]=vv[1][1],c[4][2][3]=vv[1][2],c[4][3][3]=vv[1][3]; 46 c[4][1][2]=vv[2][1],c[4][2][2]=vv[2][2],c[4][3][2]=vv[2][3]; 47 c[4][1][1]=vv[3][1],c[4][2][1]=vv[3][2],c[4][3][1]=vv[3][3]; 48 } 49 } 50 void work3(){ 51 int i,j,k,h; 52 int a[MAX];int vv[MAX][MAX]; 53 a[1]=c[1][1][1],a[2]=c[1][1][2],a[3]=c[1][1][3]; 54 c[1][1][1]=c[3][1][1],c[1][1][2]=c[3][1][2],c[1][1][3]=c[3][1][3];//左→前 55 c[3][1][1]=c[2][1][1],c[3][1][2]=c[2][1][2],c[3][1][3]=c[2][1][3];//后→左 56 c[2][1][1]=c[4][1][1],c[2][1][2]=c[4][1][2],c[2][1][3]=c[4][1][3];//右→后 57 c[4][1][1]=a[1],c[4][1][2]=a[2],c[4][1][3]=a[3];//前→右 58 for (k=1;k<=3;k++) 59 for (h=1;h<=3;h++) 60 vv[k][h]=c[5][k][h]; 61 c[5][1][3]=vv[1][1],c[5][2][3]=vv[1][2],c[5][3][3]=vv[1][3]; 62 c[5][1][2]=vv[2][1],c[5][2][2]=vv[2][2],c[5][3][2]=vv[2][3]; 63 c[5][1][1]=vv[3][1],c[5][2][1]=vv[3][2],c[5][3][1]=vv[3][3]; 64 } 65 void work4(){ 66 int i,j,k,h; 67 int a[MAX];int vv[MAX][MAX]; 68 for (i=1;i<=3;i++){ 69 a[1]=c[1][1][1],a[2]=c[1][1][2],a[3]=c[1][1][3]; 70 c[1][1][1]=c[3][1][1],c[1][1][2]=c[3][1][2],c[1][1][3]=c[3][1][3];//左→前 71 c[3][1][1]=c[2][1][1],c[3][1][2]=c[2][1][2],c[3][1][3]=c[2][1][3];//后→左 72 c[2][1][1]=c[4][1][1],c[2][1][2]=c[4][1][2],c[2][1][3]=c[4][1][3];//右→后 73 c[4][1][1]=a[1],c[4][1][2]=a[2],c[4][1][3]=a[3];//前→右 74 for (k=1;k<=3;k++) 75 for (h=1;h<=3;h++) 76 vv[k][h]=c[5][k][h]; 77 c[5][1][3]=vv[1][1],c[5][2][3]=vv[1][2],c[5][3][3]=vv[1][3]; 78 c[5][1][2]=vv[2][1],c[5][2][2]=vv[2][2],c[5][3][2]=vv[2][3]; 79 c[5][1][1]=vv[3][1],c[5][2][1]=vv[3][2],c[5][3][1]=vv[3][3]; 80 } 81 } 82 }mat; 83 inline int read(){char c;int an(0);c=getchar();while (c<‘0‘||c>‘9‘)c=getchar();while (c>=‘0‘&&c<=‘9‘){an=an*10+c-‘0‘;c=getchar();}return an;} 84 int main(){ 85 freopen ("cube.in","r",stdin); 86 freopen ("cube.out","w",stdout); 87 gets(n+1); 88 int ln=strlen(n+1),cc,i,j,k; 89 for (i=1;i<=6;i++){ 90 for (j=1;j<=3;j++){ 91 cc=read(); 92 mat.c[i][j][3]=cc%10;cc/=10; 93 mat.c[i][j][2]=cc%10;cc/=10; 94 mat.c[i][j][1]=cc%10;cc/=10; 95 } 96 } 97 for (i=1;i<=ln;i++){ 98 if (n[i]==‘1‘) mat.work1(); 99 if (n[i]==‘2‘) mat.work2(); 100 if (n[i]==‘3‘) mat.work3(); 101 if (n[i]==‘4‘) mat.work4(); 102 } 103 mat.out(); 104 return 0; 105 }
NOIP2016模拟 拼接mf(模拟)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。