求幫忙:WAline1
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int y1,m1,d1,y2,m2,d2,month_map[12]{31,0,31,30,31,30,31,31,30,31,30,31};
while(cin>>y1>>m1>>d1>>y2>>m2>>d2)
{
int ans_y1=(y1-1)*365+(y1-1)/4-(y1-1)/100+(y1-1)/400;
int ans_y2=(y2-1)*365+(y2-1)/4-(y2-1)/100+(y2-1)/400;
int year=abs(ans_y1-ans_y2);
int month1=28,month2=28,month,day=abs(d1-d2);
if (y1 % 4 == 0 && y1 % 100 != 0 && y1 != 0 || y1 % 400 == 0 && y1 != 0)
month1=29;
if (y2 % 4 == 0 && y2 % 100 != 0 && y2 != 0 || y2% 400 == 0 && y2 != 0)
month2=29;
for(int i=0;i<m1;i++)
{
month1+=month_map[i];
}
for(int i=0;i<m2;i++)
{
month2+=month_map[i];
}
month=abs(month1-month2);
cout<<year+month+day<<"\n";
}
}
看起來問題不少,比如
常見的算法,是分別算出兩個日期,距離 0000/12/31 過了幾天 (0001/1/1 為一天),再把天數相減後取絕對值
給你幾組測資
2000 1 1
1999 12 31
2000 1 31
2000 2 1
1999 1 1
2000 1 1
2000 1 1
2001 1 1
答案應該是
1 1 365 366
還有疑惑再提出 :)