杭电acm1201

http://acm.hdu.edu.cn/showproblem.php?pid=1201

这题一直搞不清楚第一年和最后一年怎么放到循环里,后来发现没有和谐的方法,所以一个一个拆开了

View Code
 1 #include<stdio.h>
 2 int leap(int year)
 3 {
 4     if((year%4==0&&year%100!=0)||(year%400==0))
 5     return 1;
 6     else return 0;
 7 }
 8 int main()
 9 {
10    int y,m,d,sum,i,n;
11    scanf("%d",&n);
12    while(n--)
13    {
14       scanf("%d-%d-%d",&y,&m,&d);
15       if(leap(y+18)==0)
16       {
17         if(m==2&&d==29)
18           {
19            printf("-1\n");
20            continue;
21           }
22       }
23       sum=18*365;
24       if(leap(y)&&m<3)
25              sum++;
26       if(leap(y+18)&&m>=3)
27             sum++;
28       for(i=y+1;i<y+18;i++)
29       {
30           if(((i%4==0&&i%100!=0)||i%400==0))
31           sum++;
32       }
33       printf("%d\n",sum);
34    } 
35 return 0;
36 }

 

posted @ 2013-04-11 16:24  执着追求的IT小小鸟  阅读(167)  评论(0编辑  收藏  举报