HDOJ 1201

简介: 18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10076 Accepted Submission(s): 3201 Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。

18岁生日

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 10076 Accepted Submission(s): 3201


Problem Description
Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。
 

 

Input
一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。
 

 

Output
T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。
 

 

Sample Input
1 1988-03-07
 

 

Sample Output
6574
 
 
/*
如果出生在2月29号,那么也就说出生那一年一定是闰年,通过简单证明可得:闰年+18=非闰年
*/
#include <iostream>
using namespace std;
bool is_leap(int n)
{
	if((n%4==0 && n%100!=0) || n%400==0)
		return 1;
	else
		return 0;
}
int main()
{
	int T;int year, month, day;int run=0;
	char tmp;
	scanf("%d", &T);
	while(T--)
	{
		run=0;
		// 先开始我还傻傻的去用string表示...麻烦...
		cin >> year >> tmp >> month >> tmp >> day;
		if(month==2 && day==29)
		{
			cout << -1 << endl;
			continue;
		}
		if(month>=3)
		{
			for(int i=1; i<=18; ++i)
				if(is_leap(year+i))
					run++;
		}
		else
		{
			for(int i=1; i<=18; ++i)
				if(	is_leap(year+i-1))
					run++;
		}
		cout << 365*18+run << endl;
	}
	return 0;
}

 

目录
相关文章
HDOJ 2802 F(N)
HDOJ 2802 F(N)
99 0
HDOJ 2802 F(N)
HDOJ 1412 {A} + {B}
HDOJ 1412 {A} + {B}
122 0
HDOJ 2034 人见人爱A-B
HDOJ 2034 人见人爱A-B
128 0
HDOJ 1323 Perfection(简单题)
HDOJ 1323 Perfection(简单题)
127 0
HDOJ 2056 Rectangles
HDOJ 2056 Rectangles
136 0
HDOJ 2019 数列有序!
HDOJ 2019 数列有序!
131 0
|
人工智能 Java BI
|
Java 机器学习/深度学习
HDOJ的题目分类
模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 ...
1833 0