码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 1201 18岁生日

时间:2015-03-11 19:44:34      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:c   c++   算法   acm   编程   

计算方法:

<1>、将出生年经过的天数与18岁那年经过的天数加在一起算作一年。
<2>、不算闰年,则18年共度过18*365天。
<3>、考虑闰年,出生年与18岁生日合在一起那年单独考虑,其他年份只要是闰年,总天数加1天即可。
<4>、单独考虑合在一起年份,若出生年是闰年,且在2月29日之前出生,那么他(她)必定经过2月29日这天,总天数加1;对于18岁那年,若是闰年,且在2月28日之后出生的,他(她)同样经过2月29这天,总天数加1.

#include<iostream> 
using namespace std;

bool isleap(int y)
{
    if(y%4==0&&(y%100!=0||y%400==0)) return true;
    return false;
}

int main()
{
	int y,m,d;
	int T,sum,i;

	cin>>T;
	while(T--)
	{
		scanf("%d-%d-%d",&y,&m,&d);
		if(!isleap(y+18)&&m==2&&d==29)
			cout<<"-1"<<endl;
		else
		{
			sum=18*365;
			if(isleap(y)&&(m<2||(m==2&&d<=28)))
				sum++;
			if(isleap(y+18)&&(m>2||(m==2&&d==29)))
				sum++;
			for(i=y+1;i<=y+17;i++)
				if(isleap(i)) sum++;
				cout<<sum<<endl;
		}

	}
    return 0;
}


HDU ACM 1201 18岁生日

标签:c   c++   算法   acm   编程   

原文地址:http://blog.csdn.net/a809146548/article/details/44202065

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!