#include <stdio.h>
#define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1: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 Date{
int Day;
int Month;
int Year;
void nextDay(){
Day++;
if(Day>dayOfMonth[Month][ISYEAP(Year)]){
Day=1;
Month++;
if(Month>12){
Month=1;
Year++;
}
}
}
};
int buf[2101][13][32];
int Abs(int x){
return x<0?-x:x;
}
int main () {
Date tmp;
int cnt=0;
tmp.Day=1;
tmp.Month=1;
tmp.Year=0;
while(tmp.Year!=2101){
buf[tmp.Year][tmp.Month][tmp.Day]=cnt;
tmp.nextDay();
cnt++;
}
int d1,d2;
int m1,m2;
int y1,y2;
int n;
scanf("%d",&n);
while(n--!=0){
while(scanf("%d:%d:%d",&y1,&m1,&d1)!=EOF){
printf("%d\n",Abs(buf[y1][m1][d1]-buf[y1][1][1])+1);
}
}
return 0;
}
不难,王道机试指南上有类似的。