文章

18

粉丝

0

获赞

96

访问

5.6k

头像
相隔天数 题解:将任意日期转换为自1年1月1日以来的总天数,然后两日期相减
P1825 复旦大学机试
发布于2025年3月19日 21:44
阅读数 286

#include <stdio.h>

int isLeap(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

int daysFromStart(int year, int month, int day) {
    int days = day;
    int monthDays[13] = {0, 31,28,31,30,31,30,31,31,30,31,30,31};
    for (int m = 1; m < month; m++) {
        if (m == 2)
            days += isLeap(year) ? 29 : 28;
        else
            days += monthDays[m];
    }
    int y = year - 1;
    for(int i=1;i<year;i++){
    	days+=isLeap(i); 
	}
    days += y * 365;
    return days;
}

int main(){
    int ye, mo, da;
    scanf("%4d%2d%2d", &ye, &mo, &da);
    int total = daysFromStart(ye, mo, da) - daysFromStart(2019, 2, 5);
    if(total>0) printf("%d", total);
    else printf("%d", -total);
    
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发