文章

28

粉丝

0

获赞

358

访问

6.9k

头像
日期差值 题解:用基准值绕开两者直接运算的复杂
P1290 上海交通大学/西北工业大学机试题
发布于2026年2月9日 15:40
阅读数 313

#include <cstdio>

using namespace std;

//直接对两组数据进行差值判断太麻烦,我们可以从一个基准开始,各自对基准运算很方便。

//从公元0年,算各自的总天数,然后作差+1即可

int getTotalDaysFromZeroYear(int year,int month,int day){

  int totalDays=0;

  int daysInMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

//前面所有年的总天数

  for(int i=0;i<year;i++){

    if(i%400==0||(i%4==0&&i%100!=0)){

      totalDays+=366;

    }else {

      totalDays+=365;

    }

  }

//本年前面月的总天数

  for(int i=0;i<month;i++){

    if(i==2&&(year%400==0||(year%4==0&&year%100!=0))){

      totalDays+=29;

    }else {

      totalDays+=daysInMonth[i];

    }

  }

//最后加上本月天数

  totalDays+=day;

  return totalDays;

}

 

int main(){

  int year1,month1,day1;

  int year2,month2,day2;

  while(scan...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发