首页 > 代码库 > Hdu 1201 18岁生日

Hdu 1201 18岁生日

18岁生日

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

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

 

#include <stdio.h>
int main()
{
    int run(int n);
    int a,year,month,day,sum,i;
    scanf("%d",&a);
    while(a--)
    {
        sum=0;
        scanf("%d-%d-%d",&year,&month,&day);
        if(month==2&&day==29)
        printf("-1\n");
        else
        {
            for(i=year+1;i<year+18;i++)
            {
                sum+=run(i);
            }
        int t=0;
        if(month>2)//||(month==2&&day==29))        {
           if(run(year+18)==366)
           t++;    
        }
        if(month<2||(month==2&&day<29))
        {
            if(run(year)==366)
            t++;
        }
        printf("%d\n",sum+365+t);            
       }
   }
   return 0;
}
int run(int n)
{   int z;
    if((n%400==0)||(n%4==0&&n%100!=0))
    z=366;
    else 
    z=365;
    return(z);
}

  

Hdu 1201 18岁生日