高斯日记(蓝桥杯试题)

   高斯日记

    大数学家高斯有个好习惯:无论如何都要记日记。

    他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如: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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值