蓝桥杯2012年省赛——猜生日

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

今年的植树节(2012 年 3 月 12日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”

“把我出生的年月日连起来拼成一个 8位数(月、日不足两位前补 0)正好可以被今天的年、月、日整除!”

他想了想,又补充到:“再给个提示,我是 6 月出生的。”

根据这些信息,请你帮小明算一下,他叔叔的出生年月日。

格式是年月日连成的 88 位数。例如,如果是 1948 年 6 月 12 日,就写:19480612。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

【代码注释】

#include
using namespace std;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int n)
{
	if(n%4==0&&n%100!=0||(n%400)==0)
		return true;
	return false;
}
int main()
{
	int year,month,day;
	int birth=19000101;
	while(1)
	{
		if(birth%2012==0&&birth%12==0&&month==6)
		{
			break;
		}//找到了就返回 
		birth++;
		year=birth/10000;
		month=birth/100%100;
		day=birth%100;
		if(day>m[month])
		{
			month++;
			if(month>12)
			{
				year++;
				if(check(year))
					m[2]=29;
				else
					m[2]=28;
				month=1;
				day=1;
			}
			else
			{
				day=1;
			}
			birth=year;
			birth=birth*100+month;
			birth=birth*100+day;
		}
	}
	cout<

【答案】19550604

你可能感兴趣的:(蓝桥杯,c++)