题解 | #日期差值#
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include <iostream>
using namespace std;
int year_gap_day(int year1,int year2)
{
if(year2<year1)
{
int tmp=year1;
year1=year2;
year2=tmp;
}
int sum=0;
while(year1!=year2)
{
if((year1%4==0&&year1%100!=0)||(year1%400==0))
++sum;
++year1;
}
return sum;
}
//**********************一年第几天*********************************//
int get_year(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
int give_day(int year,int mouth,int day)
{
int sum=0;
int rl[13]={-1,31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=1;i<mouth;i++)
{
sum+=rl[i];
}
sum+=day;
if(mouth>2)
{
sum+=get_year(year);
}
return sum;
}
//***************************************************************//
int main() {
int year1,mouth1,day1,num1;
cin>>num1;
year1=num1/10000;
mouth1=num1%10000/100;
day1=num1%100;
int year2,mouth2,day2,num2;
cin>>num2;
year2=num2/10000;
mouth2=num2%10000/100;
day2=num2%100;
int year_day1=give_day(year1,mouth1,day1);
int year_day2=give_day(year2,mouth2,day2);
int sum=abs(year_day1-year_day2)+1;
sum+=(abs(year1-year2)*365);
sum+=year_gap_day(year1,year2);
cout<<sum;
return 0;
}
// 64 位输出请用 printf("%lld")
查看12道真题和解析