首页 > 代码库 > 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(模拟)