题解 | 日期差值
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include<bits/stdc++.h> using namespace std; int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int b[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; bool isLeapYear(int year){ return (year%400==0)||(year%4==0&&year%100!=0); } int sum1=0,sum2=0; int input1,input2; int year1,month1,day1,year2,month2,day2; int main(){ cin>>input1>>input2; year1=input1/10000; year2=input2/10000; month1=(input1/100)%100; month2=(input2/100)%100; day1=input1%100; day2=input2%100; for(int i=0;i<year1;i++){ if(isLeapYear(i)){ sum1+=366; }else{ sum1+=365; } } if(isLeapYear(year1)){ a[2]=29; } for(int i=1;i<month1;i++){ sum1+=a[i]; } sum1+=day1; for(int i=0;i<year2;i++){ if(isLeapYear(i)){ sum2+=366; }else{ sum2+=365; } } if(isLeapYear(year2)){ b[2]=29; } for(int i=1;i<month2;i++){ sum2+=b[i]; } sum2+=day2; cout<<max(sum1,sum2)+1-min(sum1,sum2); }