1. 程式人生 > >Hdu 1201 18歲生日

Hdu 1201 18歲生日

blog pre scanf 生日 宋體 desc font cnblogs 是不是

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歲生日