题目描述
blablabla
样例
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
思路:简单算一下发现1000年的时间在int范围内,从0开始的日期数目,(年数-1)*365天,
当年的天数很简单,闰年的额外天数计算办法为 利用容斥原理,year / 4 - year /100 + year/400 表示闰年天数,相加即可。
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std ;
int year1,year2,m1,m2,d1,d2;
bool year(int year){
if(year % 400 ==0 || year % 4 == 0 && year % 100 != 0) return true;
return false;
}
int getyear(int year){
return year * 365 + year / 4 - year / 100 + year /400 ;
}
int getother(int ye,int month,int day){
int days = 0;
int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
for(int i = 1 ;i < month ;i ++){
if(i == 2)
days += year(ye);
days += months[i];
}
days += day;
return days;
}
int main(){
while(~scanf("%04d%02d%02d%04d%02d%02d",&year1,&m1,&d1,&year2,&m2,&d2)){
int day1 = getyear(year1-1) + getother(year1,m1,d1);
int day2 = getyear(year2-1) + getother(year2,m2,d2);
cout << abs(day1-day2)+1<<endl;
}
return 0;
}