1 1988-03-07
6574
蓝鸟吐槽:你没事过什么18岁生日啊!(她闰年判断那一步算错,致哀。。。)
这道题我用了最普通的循环18次来计算,麻烦是麻烦了一点,但是准确率还是有的,但是如果不是18年,这种算法就需要改进了。
代码如下:
#include <stdio.h> int check(int n) //判断是否为闰年,1为是 { if (n%400==0 || (n%4==0 && n%100!=0)) return 1; return 0; } int main() { int u; scanf ("%d",&u); int y,m,d; int ans; int t; while (u--) { scanf ("%d-%d-%d",&y,&m,&d); if (m==2 && d==29 && check(y+18)==0) { printf ("-1\n"); continue; } ans=0; if ((m==2 && d<=28) || m==1) { for (int i=0;i<18;i++) { t=y+i; ans=ans+365+check(t); } } else { for (int i=1;i<=18;i++) { t=y+i; ans=ans+365+check(t); } } printf ("%d\n",ans); } return 0; }