《算法笔记》3.4小节——入门模拟->日期处理

日期差值

cpp 复制代码
#include <iostream>
using namespace std;
int month[13][2]={
        {0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},
        {31,31},{31,31},{30,30},{31,31},{30,30},{31,31}
};
bool is_leap(int year){
    return (year%4==0&&year%100!=0||year%400==0);
}

int main() {
    int time1,time2,y1,y2,m1,m2,d1,d2,count;
    while(cin>>time1){
        cin>>time2;
        count=1;
        if(time1>time2) swap(time1,time2);
        y1=time1/10000,m1=time1%10000/100,d1=time1%100;
        y2=time2/10000,m2=time2%10000/100,d2=time2%100;
        while(y1<y2||m1<m2||d1<d2){
            d1++;
            count++;
            if(d1==month[m1][is_leap(y1)]+1){
                m1++;
                d1=1;
            }
            if(m1==13){
                y1++;
                m1=1;
            }
        }
        cout<<count<<endl;
    }
    return 0;
}

问题 B: Day of Week

cpp 复制代码
#include <iostream>
using namespace std;
int days[12][2]={{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
string week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
string month[12] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
bool is_leap(int year){ return (year%4==0&&year%100!=0||year%400==0); }
int to_day(int day,int m,int year){
    int count=0;
    for (int i = 1; i < year; ++i) {
        if(is_leap(i)) count+=366;
        else count+=365;
    }
    for (int i = 0; i <m-1 ; ++i) {
        count=count+days[i][is_leap(year)];
    }
    count=count+day;
    return count;
}

int main() {
    int day,year,mon;
    string monstr;
    while(cin>>day>>monstr>>year){
        for (int i = 0; i < 12; ++i) {
            if(monstr==month[i]) mon=i+1;
        }
        int ans= to_day(day,mon,year)%7;
        cout<<week[ans]<<endl;
    }
    return 0;
}

打印日期

cpp 复制代码
#include <cstdio>
int days[12][2]={{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
bool is_leap(int year){ return (year%4==0&&year%100!=0||year%400==0); }

int main() {
    int year,mon,day,count;
    while(scanf("%d %d",&year,&count)!=EOF){
        mon=1;
        day=0;
        while(count--){
            day++;
            if(day==days[mon-1][is_leap(year)]+1) {
                mon++;
                day=1;
            }
        }
        printf("%04d-%02d-%02d\n",year,mon,day);
    }
    return 0;
}

日期类

cpp 复制代码
#include <cstdio>
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool is_leap(int year){ return (year%4==0&&year%100!=0||year%400==0); }
int main() {
    int m,year,mon,day;
    scanf("%d",&m);
    for (int i = 0; i < m; ++i) {
        scanf("%d %d %d",&year,&mon,&day);
        day++;
        if(day==days[mon-1]+1){
            mon++;
            day=1;
        }
        if(mon==13){
            year++;
            mon=1;
        }
        printf("%04d-%02d-%02d\n",year,mon,day);
    }
    return 0;
}

日期累加

cpp 复制代码
#include <cstdio>
int days[12][2]={{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
bool is_leap(int year){ return (year%4==0&&year%100!=0||year%400==0); }

int main() {
    int m,year,mon,day,count;
    scanf("%d",&m);
    for (int i = 0; i < m; ++i) {
        scanf("%d %d %d %d",&year,&mon,&day,&count);
        while(count--){
            day++;
            if(day==days[mon-1][is_leap(year)]+1) {
                mon++;
                day=1;
            }
            if(mon==13){
                year++;
                mon=1;
            }
        }
        printf("%04d-%02d-%02d\n",year,mon,day);
    }
    return 0;
}
相关推荐
Dola_Zou17 分钟前
工厂智能排产软件算法保护与按产线计费实战
算法·自动化·软件工程·软件加密
-SOLO-1 小时前
开发笔记-摸鱼输入法
笔记
啦啦啦啦啦zzzz2 小时前
Logger的组装(c++20)
c++·算法·c++20
尾善爱看海3 小时前
前端算法与手写题集
前端·算法
程序员阿鹏3 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
AI 思录4 小时前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
月光船幽幽4 小时前
跨范式映射的稳定接口设计
人工智能·python·算法
疯狂打码的少年4 小时前
【计算机网络】TCP/IP协议族(四层体系结构,与OSI对比)
网络·笔记·tcp/ip·计算机网络
xqqxqxxq5 小时前
AI Agent学习:Agent协作工具技术笔记(李博杰《深入理解 AI Agent》4.6观后总结)
笔记·学习
2601_965742225 小时前
全媒体运营与短视频代运营,两者有什么区别?
大数据·数据结构·人工智能·算法·ai·媒体