LeeBlog

导航

HDU 1201 18岁生日

这里主要是纠结在闰年上面,没有生日的肯定是闰年的2月29,对吧,还有如果今年或18年后是闰年就要考虑,是在2月29前还是在2月29后

#include<stdio.h>
int judge( int x )
{
    if( x % 400 == 0 || ( x % 4== 0 && x % 100  != 0 ) )
        return 1;
    return 0;
}
int main( )
{
    int y,m,d,t;
    while(scanf( "%d",&t )!= EOF)
    {
    while( t-- )
    {
           scanf( "%d-%d-%d",&y,&m,&d );
           int sum = 0;
           if( judge( y ) && m == 2 && d == 29 && !judge( y + 18 ) )
           {
               puts( "-1" );
               continue;
           }
               for( int i = 0; i <= 18; ++i )
                    if( judge( y + i ) )
                        sum ++;
               if( judge( y + 18 ) && m <= 2 && d < 28 )
                   --sum;
               if( judge( y ) && m >= 3 )
                   --sum;
           printf( "%d\n",sum + 18 * 365 );
           }
           }
    return 0;
}

posted on 2011-05-03 12:40  LeeBlog  阅读(357)  评论(0编辑  收藏  举报