AtCoderのABC    次のABCの問題へ    前のABCの問題へ

ABC333-B Pentagon


問題へのリンク


C#のソース

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static string InputPattern = "InputX";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("AC");
            WillReturn.Add("EC");
            //Yes
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("DA");
            WillReturn.Add("EA");
            //No
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("BD");
            WillReturn.Add("BD");
            //Yes
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        string S = InputList[0];
        string T = InputList[1];

        S = ChangeStr(S);
        T = ChangeStr(T);

        int Group1 = DeriveGroup(S);
        int Group2 = DeriveGroup(T);

        if (Group1 == Group2) {
            Console.WriteLine("Yes");
        }
        else {
            Console.WriteLine("No");
        }
    }

    static string ChangeStr(string pStr)
    {
        var CharList = new List<char>();
        CharList.Add(pStr[0]);
        CharList.Add(pStr[1]);

        char[] WillReturn = new char[2];
        WillReturn[0] = CharList.Min();
        WillReturn[1] = CharList.Max();
        return new string(WillReturn.ToArray());
    }

    // グループ番号を返す
    static int DeriveGroup(string pS)
    {
        if (pS == "AB") return 1;
        if (pS == "AC") return 2;
        if (pS == "AD") return 2;
        if (pS == "AE") return 1;

        if (pS == "BC") return 1;
        if (pS == "BD") return 2;
        if (pS == "BE") return 2;

        if (pS == "CD") return 1;
        if (pS == "CE") return 2;

        if (pS == "DE") return 1;
        return -1;
    }
}


解説

正五角形の対角線は、5C2で5*4/2 = 10 通りあります。
対角線の長さごとに、グループ番号を求めて、
グループ番号を比較すれば良いです。