http://acm.hdu.edu.cn/showproblem.php?pid=1201
#include <stdio.h>
int isyear(int x)
{
if ( (x%400==0)||(x%100!=0&&x%4==0) )
{
return 1;
}
else
return 0;
}
int dayofmonth[13][2]=
{
0,0,
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31,
};
struct E
{
int day,month,year;
void nextday()
{
day++;
if (day>dayofmonth[month][isyear(year)])
{
day=1;
month++;
}
if (month>12)
{
month=1;
year++;
}
}
};
int buf[3000][13][32];
int main()
{
E tmp;
tmp.day=1;
tmp.month=1;
tmp.year=0;
int cnt=0;
while (tmp.year!=3000)
{
buf[tmp.year][tmp.month][tmp.day]=cnt;
tmp.nextday();
cnt++;
}
int n,y,m,d;
while (scanf("%d",&n)!=EOF)
{
while (n--)
{
scanf("%4d-%2d-%2d",&y,&m,&d);
if (isyear(y))
{
if (m==2&&d==29)
{
if (!isyear(y+18))
{
printf("-1\n");
continue;
}
}
}
int x=buf[y+18][m][d]-buf[y][m][d];
printf("%d\n",x);
}
}
return 0;
}