題目連結: 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;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay