文章

24

粉丝

0

获赞

170

访问

3.9k

头像
日期差值 题解:用string读取日期,再转成整形
P1290 上海交通大学/西北工业大学机试题
发布于2026年2月10日 16:41
阅读数 428

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int month_day[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

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

int get_day(int year, int month) {
    if(month == 2) {
        return is_leapyear(year) ? 29 : 28;    
    } else return month_day[month-1];
}

int sum_day(int year, int month, int day) {
    long long days = 0;
    for(int i = 1; i < year; i++) 
        if(is_leapyear(i)) days+=366;
        else days+=365;
    for(int i = 1; i < month; i++) 
        days += get_day(year, i);
    return days + day;
}

int main() {
    string str1,str2;
    while(cin >> str1 >> str2) {
        string Syear1 = str1.substr(0,4);
        string Smonth1 = str1.substr(4,2);
        string Sday1 = str1.substr(6,2);
        int year1 = stoi(Syear1), month1 = stoi(Smonth1), day1 = stoi(Sday1);
        s...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发