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 通りあります。
対角線の長さごとに、グループ番号を求めて、
グループ番号を比較すれば良いです。