#include <iostream>
#include <cmath>
using namespace std;
// 判斷是否是閏年
bool isLeapYear(int year) {
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0)
return true;
else
return false;
}
else
return true;
}
else
return false;
}
// 計算從某年初到某月某日的天數
int daysFromStartOfYear(int year, int month, int day) {
int daysPerMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (isLeapYear(year)) {
daysPerMonth[1] = 29; // 閏年2月有29天
}
int days = 0;
for (int i = 0; i < month - 1; ++i) {
days += daysPerMonth[i];
}
days += day;
return days;
}
// 計算從西元1年1月1日到某日期的總天數
int daysFromEpoch(int year, int month, int day) {
int days = 0;
for (int i = 1; i < year; ++i) {
days += isLeapYear(i) ? 366 : 365;
}
days += daysFromStartOfYear(year, month, day);
return days;
}
int main() {
int year1, month1, day1;
int year2, month2, day2;
while (cin >> year1 >> month1 >> day1 >> year2 >> month2 >> day2) {
int days1 = daysFromEpoch(year1, month1, day1);
int days2 = daysFromEpoch(year2, month2, day2);
cout << abs(days1 - days2) << endl;
}
return 0;
}
isLeapYear
判斷給定年份是否是閏年。daysFromStartOfYear
計算從某年初到某日期的天數,考慮閏年的情況。daysFromEpoch
計算從西元1年1月1日到某日期的總天數,這樣可以方便地計算兩個日期之間的天數差。abs
函數來確保結果是正數。