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

No.188 HAPPY DAY

■■■問題■■■

今日は4月22日であり、kamipeipaa君の誕生日です。
kamipeipaa君はこの日が4=2+2と表せることに気づきました。

kamipeipaa君はX月Y日についてYの数字和がXと等しいとき、
この日を"HAPPY DAY"であると呼ぶことにしました。
ここで数字和とは与えられた整数の各桁の数字が表す数の総和です。

例えば、4月4日や10月19日は4=0+4、10=1+9となり、HAPPY DAYですが、
12月3日や11月28日は12≠0+3、11≠2+8となりHAPPY DAYではありません。

グレゴリオ暦の2015年においてHAPPY DAYがどれだけあるか
kamipeipaa君に教えてあげてください。

■■■入力■■■

この問題に入力はありません。

■■■出力■■■

2015年のグレゴリオ暦におけるHAPPY DAYの数を1行で出力してください。改行を忘れないこと。


C#のソース

using System;

class Program
{
    static void Main()
    {
        int Answer = 0;

        DateTime CurrDay = new DateTime(2015, 1, 1);
        for (; CurrDay.Year == 2015; CurrDay = CurrDay.AddDays(1)) {
            if (IsHappyDay(CurrDay)) {
                Console.WriteLine("{0}はHappy Day", CurrDay.ToString(@"yyyy\/MM\/dd"));
                Answer++;
            }
        }
        Console.WriteLine(Answer);
    }

    static bool IsHappyDay(DateTime pTarget)
    {
        int wkMonth = pTarget.Month;
        int wkDay = pTarget.Day;
        return wkMonth == wkDay / 10 + wkDay % 10;
    }
}


デバッグ情報付の実行結果

2015/01/01はHappy Day
2015/01/10はHappy Day
2015/02/02はHappy Day
2015/02/11はHappy Day
2015/02/20はHappy Day
2015/03/03はHappy Day
2015/03/12はHappy Day
2015/03/21はHappy Day
2015/03/30はHappy Day
2015/04/04はHappy Day
2015/04/13はHappy Day
2015/04/22はHappy Day
2015/05/05はHappy Day
2015/05/14はHappy Day
2015/05/23はHappy Day
2015/06/06はHappy Day
2015/06/15はHappy Day
2015/06/24はHappy Day
2015/07/07はHappy Day
2015/07/16はHappy Day
2015/07/25はHappy Day
2015/08/08はHappy Day
2015/08/17はHappy Day
2015/08/26はHappy Day
2015/09/09はHappy Day
2015/09/18はHappy Day
2015/09/27はHappy Day
2015/10/19はHappy Day
2015/10/28はHappy Day
2015/11/29はHappy Day
30


解説

DateTime型で日付の加算をしながら、
それぞれの日が、HappyDayかを判定してます。