题意:
给出两个日期,计算两个日期相差了多少天。
思路:
这道题其实难度并不大,就是实现起来的方式有所不同。
这里通过一个非常清晰的思路来进行编写。
对每个日期,都计算从第一年开始算当前是第几天,然后两者做一下差就行了。
代码非常简洁易懂:
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+10;
const int months[]={
0,31,28,31,30,31,30,31,31,30,31,30,31
};
int is_leap(int y){
if(y%4==0 && y%100 != 0 || y%400 == 0)
return 1;
else
return 0;
}
int check(int y , int m){
if(m == 2)
return 28 + is_leap(y);
else
return months[m];
}
int calc(int y , int m , int d){
int res = 0;
for(int i = 1 ; i < y ; i++)
res += 365 + is_leap(i);
for(int i = 1 ; i < m ; i++)
res += check(y,i);
res += d;
return res;
}
int main(){
int y1 , y2 , m1 , m2 , d1 , d2;
while(~scanf("%04d%02d%02d\n%04d%02d%02d",&y1,&m1,&d1,&y2,&m2,&d2)){
cout << abs(calc(y1,m1,d1) - calc(y2,m2,d2))+1 << endl;
}
return 0;
}