【ProjectEuler】ProjectEuler_019

来源:互联网 发布:汽车电脑调音软件 编辑:程序博客网 时间:2024/06/10 20:46
// You are given the following information, but you may prefer to do some research for yourself.//// 1 Jan 1900 was a Monday.// Thirty days has September,// April, June and November.// All the rest have thirty-one,// Saving February alone,// Which has twenty-eight, rain or shine.// And on leap years, twenty-nine.// A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.// How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?#include <iostream>#include <windows.h>using namespace std;//每个月的天数,2月无视int dayOfMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//星期enum Week{    Sunday = 0,    Monday,    Tuesday,    Wednesday,    Thursday,    Friday,    Saturday};//月份enum Month{    January = 0,    February,    March,    April,    May,    June,    July,    August,    September,    October,    November,    December};//判断是否是闰年bool isLeapYear(int year){    if(year % 4 == 0)    {        if(year % 100 == 0)        {            if(year % 400 == 0)            {                return true;            }            return false;        }        return true;    }    return false;}//获取某年某月的天数,主要判断是否为闰年2月int getDayOfMonth(int year, int month){    if(month == February && isLeapYear(year))    {        return 29;    }    else    {        return dayOfMonth[month];    }}void F1(){    cout << "void F1()" << endl;    LARGE_INTEGER timeStart, timeEnd, freq;    QueryPerformanceFrequency(&freq);    QueryPerformanceCounter(&timeStart);    int year = 1900;    int month = January;//January    int week = Monday;//Monday    int result = 0;//times Sundays fell on the first of the month    for(; year <= 2000; year++)    {        for(; month <= December; month++)        {            week = (week + getDayOfMonth(year, month)) % 7;            if(week == Sunday && year >= 1901)            {                result++;            }        }        month = 0;//initialize month value    }    cout << "The times Sundays fell on the first of the month is " << result << endl;    QueryPerformanceCounter(&timeEnd);    cout << "Total Milliseconds is " << (double)((double)(timeEnd.QuadPart - timeStart.QuadPart) * 1000 / (double)freq.QuadPart) << endl;}//主函数int main(){    F1();    return 0;}/*void F1()The times Sundays fell on the first of the month is 171Total Milliseconds is 11.8723By GodMoon*/

原创粉丝点击