hdoj-1201 18岁生日【日期和时间处置】
hdoj-1201 18岁生日【日期和时间处理】
http://acm.hdu.edu.cn/showproblem.php?pid=1201
以3月为界 三月之前的从当前判断是否是闰年 否则从下一年判断是否是闰年
AC code:
#include<stdio.h> int runnian(int y) { if(y%4==0&&y%100!=0||y%400==0) return 1; else return 0; } int main() { int t,y,m,d,i,sum; scanf("%d",&t); while(t--) { sum=18*365; scanf("%d-%d-%d",&y,&m,&d); if(m==2&&d==29) { printf("-1\n"); continue;//进行下一组数据 或者把该部分写在下面//部分 } if(m>=3) { for(i=1;i<=18;i++) { if(runnian(y+i)) sum++; } } else { for(i=0;i<18;i++) { if(runnian(y+i)) sum++; } } // if(m==2&&d==29) // printf("-1\n"); // else // printf("%d\n",sum); printf("%d\n",sum); } return 0; }
下面的代码是我自己的思路 但不知缺少了哪种情况 始终不能AC 还请大神指点
#include<stdio.h> int runnian(int x) { if(x%4==0&&x%100!=0||x%400==0) return 1; else return 0; } int main() { int t,y,m,d; scanf("%d",&t); while(t--) { int sum=18*365; scanf("%d-%d-%d",&y,&m,&d); if(runnian(y)&&m==2&&d==29) printf("-1\n"); else if(runnian(y)&&(m==1||m==2&&d<29)) printf("%d\n",sum+=5); else if(y%4==3) printf("%d\n",sum+=5); else if(y%4==2&&(m>=3||m==2&&d==29)) printf("%d\n",sum+=5); else printf("%d\n",sum+=4); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。