[paiza レベルアップ問題集] 日付セット　曜日　（paizaランクB相当)

[問題元](https://paiza.jp/works/mondai/dateset/day_of_week?language_uid=c-sharp)
###概要
年月日が与えられるので、その日付の曜日を計算する。
1800年１月1日は水曜日
###コード
```c#
static void Main(string[] args)
        {
            string[] input = Console.ReadLine().Trim().Split(' ');
            int y = int.Parse(input[0]);
            int m = int.Parse(input[1]);
            int d = int.Parse(input[2]);
            int normalYear = 30 * 4 + 28 + 7 * 31;
            int leapYear = normalYear + 1;
            //1800年1月1日からy年m月d日の経過日数を計算
            int NumberOfDays = 0;
            //1800年１月1日から(y-1)年の大晦日までの日数を計算
            if(y > 1800)
            {
                NumberOfDays += normalYear - 1;
                for(int i =1801; i < y; i++)
                {
                    if (IsLeapYear(i))
                    {
                        NumberOfDays += leapYear;
                    }
                    else
                    {
                        NumberOfDays += normalYear;
                    }
                }
                //y年になってからの経過日数を計算
                for (int i = 1; i < m; i++)
                {
                    if (i != 2)
                    {
                        if (i == 4 | i == 6 | i == 9 | i == 11)
                        {
                            NumberOfDays += 30;
                        }
                        else
                        {
                            NumberOfDays += 31;
                        }
                    }
                    else
                    {
                        if (IsLeapYear(y))
                        {
                            NumberOfDays += 29;
                        }
                        else
                        {
                            NumberOfDays += 28;
                        }
                    }
                }
            }
            if(y == 1800)
            {
                NumberOfDays--;
            }
            NumberOfDays += d;
            //経過に日数の7の剰余が
            string dayOfWeek = null;
            switch(NumberOfDays)
            {
                case 0:
                    dayOfWeek = "水";
                    break;
                case 1:
                    dayOfWeek = "木";
                    break;
                case 2:
                    dayOfWeek = "金";
                    break;
                case 3:
                    dayOfWeek = "土";
                    break;
                case 4:
                    dayOfWeek = "日";
                    break;
                case 5:
                    dayOfWeek = "月";
                    break;
                case 6:
                    dayOfWeek = "火";
                    break;
            }
            Console.WriteLine(dayOfWeek + "曜日");
            
        }

        static bool IsLeapYear(int y)
        {
            //400で割り切れるうるう年
            if (y % 400 == 0)
            {
                return true;
            }
            //100で割り切れるなら平年
            else if (y % 100 == 0)
            {
                return false;
            }
            //4で割り切れるならうるう年
            else if (y % 4 == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
```````