AtCoderのARC    次のARCの問題へ    前のARCの問題へ

ARC046-B 石取り大作戦


問題へのリンク


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("5");
            WillReturn.Add("3 3");
            //Takahashi
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("4");
            WillReturn.Add("3 3");
            //Aoki
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("5");
            WillReturn.Add("3 2");
            //Takahashi
        }
        else if (InputPattern == "Input4") {
            WillReturn.Add("1000000000");
            WillReturn.Add("1000000000 1");
            //Takahashi
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        long N = long.Parse(InputList[0]);

        long[] wkArr = InputList[1].Split(' ').Select(pX => long.Parse(pX)).ToArray();
        long A = wkArr[0];
        long B = wkArr[1];

        if (N <= A) {
            Console.WriteLine("Takahashi");
            return;
        }

        if (A == B) {
            if (N % (A + 1) == 0) {
                Console.WriteLine("Aoki");
            }
            else {
                Console.WriteLine("Takahashi");
            }
        }
        if (A < B) {
            Console.WriteLine("Aoki");
        }
        if (A > B) {
            Console.WriteLine("Takahashi");
        }
    }
}


解説

場合1 N <= A の場合
これは先手が初手で、全部取って終わりです。

場合2 A = B の場合
(N,A,B)= (4,3,3) とすると Bの勝ち
(N,A,B)= (5,3,3) とすると Aの勝ち
(N,A,B)= (6,3,3) とすると Aの勝ち
(N,A,B)= (7,3,3) とすると Aの勝ち
(N,A,B)= (8,3,3) とすると Bの勝ち
で N % (A+1) と先手後手で決まります。

場合3 A < B の場合
取れる数の差があるため、たくさん取れるほうが勝ちます。
1個取って、相手が取ってを繰り返せば、全部取れる状態に遷移できるからです。

場合4 A > B の場合
場合3と同様です。