1. 程式人生 > >hdu 5292 Pocket Cube

hdu 5292 Pocket Cube

        給一個二階魔方的狀態,可能安裝錯了,問是否可以還原。

        作為一個Cuber,十分鐘碼出來怒拿此題FB。因為二階魔方,可以做到交換任意兩個塊,所以塊的位置是不用考慮的,只用考慮色向。因為黃白相對,考察黃白麵的朝向,正確記為0,順時針記為1,否則記為2,統統加起來能被3整除就是合法的。不要問我為什麼,因為我是Cuber。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <set>
#include <algorithm>

using namespace std;

#define ll long long


int main(){
    int t;
    cin>>t;
    int cas=0;
    while(t--){
        cas++;
        int ans=0;
        for(int i=1;i<=24;i++){
            char color[2];
            scanf("%s",color);
            if(color[0]=='w'||color[0]=='y'){
                switch(i){
                    case 5:
                    case 7:
                    case 9:
                    case 12:
                    case 14:
                    case 16:
                    case 21:
                    case 24:
                        ans++;
                        break;
                    case 6:
                    case 8:
                    case 10:
                    case 11:
                    case 13:
                    case 15:
                    case 22:
                    case 23:
                        ans+=2;
                        break;
                }
            }
        }
        printf("Case #%d: ",cas);
        if(ans%3==0){
            printf("YES\n");
        }else{
            printf("NO\n");
        }
    }
    return 0;
}