NYOJ 312 20岁生日

地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=312

思路:同hdu 18岁的生日,不过在这里需要在if(m==2&&d==29&&(!rn(y+20))) {cout<<"-1"<<endl;} 添加!rn(y+20),而18岁的生日不需要添加是由于闰年+18=非闰年

这道题不知道咋了,用C++就一直TimeLimitExceeded,换用C语言scanf,printf就AC了。。。。表示不太懂。。。。。。

 1 #include<stdio.h>

 2 #include<stdlib.h> 

 3 int rn(int year)

 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,i;

13     char c;

14     scanf("%d",&n);

15     while(n--)

16     {

17         k=0;

18         scanf("%d-%d-%d",&y,&m,&d);

19         if(m==2&&d==29&&(!rn(y+20))) {

20             printf("-1\n");

21             continue; }

22         else{

23             if(m>=3) {

24                 for(i=y+1;i<y+21;++i)

25                     if(rn(i)) k++;

26             }

27             else {

28                 for(i=y;i<y+20;++i)

29                     if(rn(i)) k++;

30             }

31         }

32         printf("%d\n",20*365+k);

33     }

34     return 0;

35 }

36                 

你可能感兴趣的:(OJ)