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

ARC-032-A ホリドッグ

■■■問題■■■

とても賢い犬であるホリドッグ(Holidog)くんは、足し算と素数判定をすることができます。

ホリドッグくんはある正整数についてそれが素数であるか尋ねられたとき、
それが素数であるならWANWAN、そうでなければBOWWOWと吠えます。

あなたは、ホリドッグくんに1からnまでの総和 1+2+3+ ・・・ +n が
素数であるかどうかを尋ねました。
ホリドッグくんがどう吠えたかを出力するプログラムを書いて下さい。

素数とは、1とその数自身以外の正整数で割り切ることが出来ない2以上の正整数のことを言います。
例えば2や3や17は素数です。1や10は素数ではありません。

■■■入力■■■

n

1行目には、1つの整数 n(1 <= n <= 1000)が与えられる

■■■出力■■■

1 行目には、1+2+3+ ・・・ +n が素数ならばWANWAN、そうでなければBOWWOWを出力せよ。
末尾の改行を忘れないこと。


C#のソース

using System;
using System.Collections.Generic;

class Program
{
    static string InputPattern = "InputX";

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

        if (InputPattern == "Input1") {
            WillReturn.Add("2");
            //WANWAN
            //1+2=3 であり、3は素数なので、WANWANと出力します
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("5");
            //BOWWOW
            //1+2+3+4+5=15 であり、15=3×5 なので、BOWWOWと出力します
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("1");
            //BOWWOW
            //1は素数ではありません
        }
        else if (InputPattern == "Input4") {
            WillReturn.Add("999");
            //BOWWOW
            //1+2+ ・・・ +999 は素数ではありません
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

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

        int wkSum = n * (n + 1) / 2;
        Console.WriteLine(IsPrime(wkSum) ? "WANWAN" : "BOWWOW");
    }

    static bool IsPrime(int pTarget)
    {
        if (pTarget == 1) return false;
        for (int I = 2; I * I <= pTarget; I++) {
            if (pTarget % I == 0) return false;
        }
        return true;
    }
}


解説

試し割りで素数判定してます。