HDU 1201 18岁的生日

 1 #include<iostream>
 2 using namespace std;
 3 bool rn(int year)    //bool为布尔型,只有一个字节,取值false和true,是0和1的区别   
 4  {
 5      if(year%4==0&&year%100!=0||year%400==0)
 6      return true;
 7      else
 8      return false;
 9  }
10  int main()
11  {
12      int y,m,d,n,k;
13      char c;
14      cin>>n;
15      while(n--)
16      {
17         k=0;
18         cin>>y>>c>>m>>c>>d;
19         if(m==2&&d==29)
20          {
21            cout<<"-1"<<endl;
22            continue;
23          }
24         else{
25              if(m>=3){
26                       for(int i=y+1;i<y+19;++i)
27                       if(rn(i))  k++;
28                       }
29                  else{
30                       for(int i=y;i<y+18;++i)
31                       if(rn(i))  k++;
32                       }
33              }
34              cout<<(18*365+k)<<endl;
35         }
36         return 0;
37  }
38  生活常识,平年:365天,闰年:366(2月有29号)
39 如果出生在2月29号,那么也就说出生那一年一定是闰年,通过简单证明可得:闰年+18=非闰年

posted on 2012-08-02 16:42  mycapple  阅读(259)  评论(0编辑  收藏  举报

导航