HDU 1201 18岁生日(日期计算)

来源:互联网 发布:胎儿数据与周数对照表 编辑:程序博客网 时间:2024/06/05 19:59

18岁生日

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


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

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

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

Sample Input
11988-03-07
 

Sample Output
6574
 

Author
Gardon
 

AC代码:

#include<iostream>#include<cstdlib>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<cstdlib>#include<algorithm>typedef long long LL;using namespace std;int main(){int T,x;int y,m,d;cin>>T;while(T--){int sum=0;   //sum为经历的为闰年的次数 scanf("%d-%d-%d",&y,&m,&d);if(m==2&&d==29){printf("-1\n");continue;}if((y%4==0&&y%100!=0||y%400==0)&&m<3) //出生那年 sum++;;x=y+18;if((x%4==0&&x%100!=0||x%400==0)&&m>=3)  //十八岁那年             sum++;        for(int i=y+1;i<y+18;i++)            if(i%4==0&&i%100!=0||i%400==0)                 sum++;                printf("%d\n",365*18+sum);}return 0;}


1 0
原创粉丝点击