題目連結: https://zerojudge.tw/ShowProblem?problemid=a263
# 解題思路
用一個函式寫從西元 0 年 0 月 0 日到現在總共過了幾天 (不含潤天)
再寫一個函式寫計算西元 0 年 0 月 0 日到現在的年份中有幾個閏年
之後,(運用排容原理) 將兩個不同年份到 0 年 0 月 0 日的天數相減就是答案了!!
# 程式碼
#include <iostream> | |
#include <cmath> | |
using namespace std; | |
int month_day[12]={31,28,31,30,31,30,31,31,30,31,30,31}; | |
// 計算天數 (不含閏天) | |
int date(int year, int month, int day){ | |
int total=0; | |
total+=(year-1)*365; | |
for(int i=0;i<month-1;i++) | |
total+=month_day[i]; | |
total+=day-1; | |
if(((year%4==0&&year%100!=0)||year%400==0)&&month>2) | |
total++; | |
return total; | |
} | |
// 計算總共有幾個閏年 | |
int leap(int year){ | |
year--; | |
return year/4-year/100+year/400; | |
} | |
int main() { | |
int y1,y2,m1,m2,d1,d2; | |
while(cin>>y1>>m1>>d1>>y2>>m2>>d2) | |
cout<<abs(date(y1,m1,d1)+leap(y1)-date(y2,m2,d2)-leap(y2))<<endl; | |
} |