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