HDU 1201 18岁生日
18岁生日
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
代码:
1 #include<cstdio> 2 using namespace std; 3 4 bool judge(int year) 5 { 6 if((year%4==0&&year%100!=0)||year%400==0) 7 return true; 8 return false; 9 } 10 11 int main() 12 { 13 int count,year,month,day; 14 int t,i; 15 scanf("%d",&t); 16 while(t--) 17 { 18 count=18*365; 19 scanf("%d-%d-%d",&year,&month,&day); 20 if(month==2&&day==29) 21 { 22 printf("-1\n"); 23 continue; 24 } 25 for(i=year+1;i<=year+17;i++) 26 { 27 bool flag=judge(i); 28 if(flag) 29 count++; 30 } 31 if(month<=2) 32 if(judge(year)) 33 count++; 34 if(month>2) 35 if(judge(year+18)) 36 count++; 37 printf("%d\n",count); 38 } 39 return 0; 40 }