HDU1201-18岁生日

来源:互联网 发布:写作起名软件 编辑:程序博客网 时间:2024/05/01 03:14

18岁生日

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

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

Author
Gardon

#include<stdio.h>#define yearday 365#define n 18int f(int year)//判断是否为闰年 {    if((year%4==0&&year%100!=0)||year%400==0)        return 1;    return 0;}int main(){    int i,t,y,m,d,sum;    scanf("%d",&t);    while(t--)    {        sum=0;        scanf("%d-%d-%d",&y,&m,&d);//格式化输入         if(m == 2 && d == 29 && f(y + n) != 1)              printf("-1\n");        else{            sum=yearday*n;//按照每年365天计算             for(i=1;i<n;i++)                sum+=f(y+i);//不考虑第一年和最后一年,若期间哪一年为闰年,sum加1             if(m>2)                sum+=f(y+n);            else if(m<2||d!=29)                sum+=f(y);            printf("%d\n",sum);        }     }    return 0;}
原创粉丝点击