高斯日记
大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210
后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?
高斯出生于:1777年4月30日。
在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。
高斯获得博士学位的那天日记上标着:8113
请你算出高斯获得博士学位的年月日。
提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21
请严格按照格式,通过浏览器提交答案。
注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。
// 高斯日记.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <iostream>
using namespace std;
//分析:需要通过一个经过的天数知道其日期,则可以按照天数对于日期进行自加
//自加的关键在于每月月底,需要将日期置1,月份加1,以及年底将日期月份同时置1
//因为闰年的2月有29天,所以还要对是否闰年进行判断
int main()
{
int year = 1777, mon = 4, day = 30;//定义起始日期
int d;//定义天数
bool run = 0;//定义闰年
for (d = 1; d < 8113; d++)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)//对是否闰年进行判断,若是则置1,反之为0
{
run = 1;
}
else
{
run = 0;
}
if (run == 1 && mon == 2 && day == 29)//如果是闰年的2月,则有29天,过了这天后,月份自加为3,日期置1
{
mon++;
day = 1;
}
else if (run == 0 && mon == 2 && day == 28)
{
mon++;
day = 1;
}
else if ((mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10) && day == 31)
{
mon++;
day = 1;
}
else if ((mon == 4 || mon == 6 || mon == 9 || mon == 11) && day == 30)
{
mon++;
day = 1;
}
else if (mon == 12 && day == 31)
{
year++;
mon = 1;
day = 1;
}
else//日期自加
{
day++;
}
}
cout << year << " " << mon << " " << day;
return 0;
}
运行结果:1799 7 16