文章

119

粉丝

68

获赞

86

访问

19.4k

头像
相隔天数 题解:考虑两个方向,大于和小于
P1825 复旦大学2019年机试
发布于2025年2月17日 10:45
阅读数 29

#include <bits/stdc++.h>
using namespace std;

int date[2][13]={
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,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 main() {
	int year,month,day;
	while(scanf("%4d%2d%2d",&year,&month,&day)!=EOF){
	    int k=isLeapYear(year)?1:0;
	    for(int i=0;i<month;i++){
	        day+=date[k][i];
	    }
	    int l=isLeapYear(2019)?1:0;
	    int day2=5;
	    for(int i=0;i<2;i++){
	        day2+=date[l][i];
	    }
	    int count=0;
	    if(year>=2019){
	        for(int i=2019;i<year;i++){
	            count+=isLeapYear(i)?366:365;
	        }
	        cout<<count+day-day2<<endl;
	    }else{
	        for(int i=year;i<2019;i++){
	            count+=isLeapYear(i)?366:365;
	        }
	        cout<<count+day2-day<<endl;
	    }
	    
	}

}

时间长度的函数是很好写的,主要是它存在两个方向,大于2...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发