有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
示例1
输入
20110412
20110422
输出
11
题解
C++11
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
using namespace std;
int daysOf(int y,int m);
int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
//在这个模板的同一级目录下建一个'1.txt'的文件
//然后把输入全部放进去保存,之后运行代码完全不用输入任何数据
#endif
int s,e;
while (cin>>s>>e){
int d=0;
int sy=s/10000;
int ey=e/10000;
int sm=(s-sy*10000)/100;
int em=(e-ey*10000)/100;
int sd=daysOf(sy,sm)+s%100;
int ed=daysOf(ey,em)+e%100;
d=ed-sd;
for (int i=sy;i<ey;i++){
if(i%400==0||(i%4==0&&i%100!=0)){
d+=366;
}
else{
d+=365;
}
}
cout<<d+1<<endl;
}
return 0;
}
int daysOf(int y,int m){
int d=0;
for(int i=1;i<m;i++){
d+=days[i];
}
if (m>2&&(y%400==0||(y%4==0&&y%100!=0)))
d++;
return d;
}