トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

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通りに場合分けしてます。