中南大学2016年校队选拔赛第一场Problem E

来源:互联网 发布:淘宝一分钱刷信誉技巧 编辑:程序博客网 时间:2024/04/29 14:42

Problem E: 小Y的彩色立方体

Time Limit: 1 Sec  Memory Limit:128 MB
Submit: 115  Solved: 18
[Submit][Status][Ask]

Description

Y十分喜欢给立方体染色,他有许多的立方体,他也有许多颜色的染料。他喜欢把立方体染成各种颜色。
由于对于对称性的偏执的追求,他会把立方体的相对两面染成相同的颜色。
他染了许多许多的立方体。现在他拿出两个立方体,问是否这两个立方体是一样的(旋转后相同被视作相同)。

Input

多组数据读到文件结尾为止。
每组数据会给出2个立方体的配色方案,各用6个大写英文字母表示配色方案。
对应面的顺序按照展开图所示。输入保证满足背景描述。

由于小Y只喜欢玩立方体,而不是很熟悉电脑,因此输入中夹杂一些空格和换行。

Output

对于两个相同点的立方体输出Same并按照展开图中的标号顺序输出转后按照标号顺序组成串字典序最小的颜色串。

否则输出Different。具体格式详见样例。

Sample Input

ABAB CCA BABCCABABCCBCBCDD

Sample Output

Case 1: Same ABABCCCase 2: Different

HINT

仔细思考各种可能的情况。另外注意字符读入方式,自己多写几个数据尝试下。



只需要判断一个角的颜色是否一致就行了


#include<bits/stdc++.h>using namespace std; char ch[50];char ch1[50],ch2[50]; int main(){    int cnt=1;    int cas=1;    char c;    while(scanf("%c",&c)!=EOF)    {        if('A'<=c&&c<='Z')            ch[cnt++]=c;        else continue;        if(cnt==13)        {            ch1[1]=ch[1];ch1[2]=ch[2];ch1[3]=ch[5];            ch2[1]=ch[7];ch2[2]=ch[8];ch2[3]=ch[11];            sort(ch1+1,ch1+4);            sort(ch2+1,ch2+4);            printf("Case %d: ",cas++);            int i;            bool flag=true;            for(i=1;i<=3;i++)                if(ch1[i]!=ch2[i])                    flag=false;            if(flag)                printf("Same %c%c%c%c%c%c\n",ch1[1],ch1[2],ch1[1],ch1[2],ch1[3],ch1[3]);            else                printf("Different\n");            cnt=1;        }    }    return 0;}


0 0