【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*/