https://www.luogu.org/problem/show?pid=2007

题目背景

常神牛从来没接触过魔方,所以他要借助计算机来玩。即使是这样,他还是很菜。

题目描述

常神牛家的魔方都是3*3*3的三阶魔方,大家都见过。

EX的魔方-LMLPHP

(更正:3 4以图为准。)

作为一名菜鸟,常神牛从网上搜了一篇攻略,并找人翻译成了他自己会做的方法。现在告诉你他的魔方情况,以及他从网上搜到的攻略,请你求出最后魔方变成什么样子。

输入输出格式

输入格式:

输入文件为cube.out。

第一行,一串数字(长度不大于100),表示常神牛从网上搜到的攻略。

下面6*3行,每行3个数字,每三行表示魔方一个面的情况,六个面的顺序是前、后、左、右、上、下。

输出格式:

输出文件为cube.out。

6*3行,表示处理后的魔方,形式同输入。

这题真是恶心到我了 谁让我想象力差 怪我喽

应该有更简便的写法 没找到啥规律 直接模拟 但是网上找程序对拍的时候发现我写的其实没有那么长...

 #include<iostream>
 #include<cstring>
 #include<cstdio>
 using namespace std;
 ],mf[][];
 ]={,,,,,,,,,},f2[]={,,,},f3[]={,,,};
 void roate1(int k){
     ];
     ;i<=;i++){
         go[f[i]]=mf[k][i];
     };i<=;i++) mf[k][i]=go[i];
 }
 void O1(){
     roate1();
     ];
     ;i<=;i++) t[i]=mf[][f3[i]];
     ;i<=;i++) mf[][f3[i]]=mf[][f3[i]];
     ;i<=;i++) mf[][f3[i]]=mf[][f3[i]];
     ;i<=;i++) mf[][f3[i]]=mf[][f3[i]];
     ;i<=;i++) mf[][f3[i]]=t[i];
 }
 void O2(){
     O1();O1();O1();
 }
 void O4(){
     roate1();roate1();roate1();
     ];
     ;i<=;i++) t[i]=mf[][f2[i]];
     ;i<=;i++) mf[][f2[i]]=mf[][f2[i]];
     ;i<=;i++) mf[][f2[i]]=mf[][f2[i]];
     ;i<=;i++) mf[][f2[i]]=mf[][f2[i]];
     ;i<=;i++) mf[][f2[i]]=t[i];
 }
 void O3(){
     O4();O4();O4();
 }
 char in(){
     char c=getchar();
     while(c=='\n'||c==' ')c=getchar();
     return c;
 }
 int main()
 {
     //freopen("mf.in","r",stdin);
     //freopen("mf.out","w",stdout);
     scanf("%s",op);
     ;i<=;i++){
         ;j<=;j++)
             cin>>mf[i][j];
     }
     ;i<strlen(op);i++){
         switch(op[i]){
             ':O1();
             break;
             ':O2();
             break;
             ':O3();
             break;
             ':O4();
             break;
         }
     }
     ;i<=;i++){
         ;j<=;j++){
             printf("%c",mf[i][j]);
             ==) printf("\n");
         }
     }
     ;
 }

呵呵

 #include <cstdio>
 #include <algorithm>
 #include <cstring>
 using namespace std;
 ];
 ][][], t1, t2, t3;
 void show(int k)
 {
     int i, j;
     ;i<=;i++)
     {
         ;j<=;j++)printf("%d",mat[k][i][j]);
         printf("\n");
     }
 }
 void fu(int &a1, int &a2, int &a3, int &b1, int &b2, int &b3)
 {a1=b1;a2=b2;a3=b3;}
 void solve(int o)
 {
     )
     {
         fu(t1,t2,t3,mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],t1,t2,t3);
         fu(t1,t2,t3,mat[][][],mat[][][],mat[][][]);//顺时针
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],t1,t2,t3);
     }
     )
     {
         fu(t1,t2,t3,mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],t1,t2,t3);
         fu(t1,t2,t3,mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],t1,t2,t3);
     }
     )
     {
         fu(t1,t2,t3,mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],t1,t2,t3);
         fu(t1,t2,t3,mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],t1,t2,t3);
     }
     )
     {
         fu(t1,t2,t3,mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],t1,t2,t3);
         fu(t1,t2,t3,mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],mat[][][],mat[][][],mat[][][]);
         fu(mat[][][],mat[][][],mat[][][],t1,t2,t3);
     }
 }
 int main()
 {
     freopen("mf.in","r",stdin);
     freopen("ans.out","w",stdout);
     int i, j, k;
     ];
     scanf();
     ;k<=;k++)
     {
         ;i<=;i++)
         {
             scanf();
             ;j<=;j++)mat[k][i][j]=s[j]-;
         }
     }
     ;order[i];i++)solve(();
     ;k<=;k++)show(k);
     ;
 }
05-11 18:27