1 #include<stdio.h>
2 #include<string.h>
3 #include<math.h>
4 #include<iostream>
5 #include<limits.h>
6 #include<algorithm>
7 #include<queue>
8 #include<vector>
9 #include<set>
10 #include<stack>
11 #include<string>
12 #include<sstream>
13 #include<map>
14 #include<cctype>
15 using namespace std;
16 // 1 , 年份不同的话 计算中间的 年差 , 然后再计算 , 不完整的年 , 的差
17 // 2 , 年份相同的话 计算 中间的日期差
18 bool is_leap_year(int n)
19 {
20 if((n%4==0&&n%100!=0)||n%400==0)
21 return true;
22 return false;
23 }
24 int main()
25 {
26 int t,year1,year2,month1,month2,day1,day2,days,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
27 scanf("%d",&t);
28 while(t--) // 中间 是 从 1900 年 到 100万年 中间的 年数比较多
29 {
30 days=0;
31 scanf("%d%d%d%d%d%d",&year1,&month1,&day1,&year2,&month2,&day2); // 每四百年 都 是 146097 天 .
32 if(year1!=year2)
33 {
34 int time=max(0,year2-year1-1)/400; // 有几个四百年 ?
35 days=time*146097; // 按照完整的 四百年来说 有这么多天
36 year1=year1+time*400; //
37 for(int i=year1+1;i<year2;i++)
38 {
39 if(is_leap_year(i))
40 days+=366;
41 else
42 days+=365;
43 } // 年份不同的话 , 中间的年份已经处理完毕 .
44 if(is_leap_year(year1))
45 {
46 for(int i=month1+1;i<=12;i++)
47 days+=b[i];
48 days+=b[month1]-day1+day2;
49 for(int i=1;i<month2;i++)
50 days+=b[i];
51 }
52 else
53 {
54 for(int i=month1+1;i<=12;i++)
55 days+=a[i];
56 days+=a[month1]-day1+day2;
57 for(int i=1;i<month2;i++)
58 days+=b[i];
59 } // 年份不同的情况处理完毕 .
60 }
61 else // 年份相同的话
62 {
63 if(month1==month2) // 并且 月份 相同的话
64 {
65 days=day2-day1;
66 }
67 else // 年份 相同 处理完毕
68 {
69 if(is_leap_year(year1))
70 {
71 for(int i=month1+1;i<month2;i++)
72 days+=b[i];
73 days+=b[month1]-day1+day2;
74 }
75 else
76 {
77 for(int i=month1+1;i<month2;i++)
78 days+=a[i];
79 days+=a[month1]-day1+day2;
80 } // 年份不同处理完毕
81 }
82 }
83 printf("%d
",days);
84 }
85 return 0;
86 }