トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
ABC-056-A HonestOrDishonest
■■■問題■■■
シカのAtCoDeerくんとTopCoDeerくんが「正直者か嘘つきか」ゲームをしています。
このゲームでは、正直者は常にほんとうのことを言い、嘘つきは常に嘘を言います。
文字aとbが入力として与えられます。これらはそれぞれHかDのどちらかです。
a=Hのとき、AtCoDeerくんは正直者です。
a=Dのとき、AtCoDeerくんは嘘つきです。
b=Hのとき、AtCoDeerくんは「TopCoDeerくんは正直者だ」と発言しています。
b=Dのとき、AtCoDeerくんは「TopCoDeerくんは嘘つきだ」と発言しています。
これらから判断して、TopCoDeerくんが正直者かどうか判定してください。
■■■入力■■■
a b
●a=HまたはD
●b=HまたはD
■■■出力■■■
TopCoDeerくんが正直者ならHを、嘘つきならDを出力せよ。
C#のソース
using System;
using System.Collections.Generic;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("H H");
//H
//AtCoDeerくんは正直者なので、
//AtCoDeerくんの言っているとおりTopCoDeerくんは正直者です。
}
else if (InputPattern == "Input2") {
WillReturn.Add("D H");
//D
//今度はAtCoDeerくんは嘘つきなので、
//AtCoDeerくんの言っていることとは異なりTopCoDeerくんは嘘つきです。
}
else if (InputPattern == "Input3") {
WillReturn.Add("D D");
//H
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
string[] wkArr = InputList[0].Split(' ');
string a = wkArr[0];
string b = wkArr[1];
if (a == "D" && b == "D") Console.WriteLine("H");
if (a == "D" && b == "H") Console.WriteLine("D");
if (a == "H" && b == "D") Console.WriteLine("D");
if (a == "H" && b == "H") Console.WriteLine("H");
}
}
解説
4通りに場合分けしてます。