日期累加(北京理工大学考研机试题)

简介: 日期累加(北京理工大学考研机试题)

文章目录

  • 日期累加
  • 日期类问题必备函数
  • AC代码


日期累加

本题链接:日期累加

本博客给出本题截图

image.png

日期类问题必备函数

const int months[13] = {
    0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
int is_leap(int year)  // 闰年返回1,平年返回0
{
    if (year % 4 == 0 && year % 100 || year % 400 == 0)
        return 1;
    return 0;
}
int get_days(int y, int m)  // y年m月有多少天
{
    if (m == 2) return months[m] + is_leap(y);
    return months[m];
}

AC代码

代码解释:打印日期(华中科技大学考研机试)的基础上加上一点小优化即可:先一年一年的去数,如果不够一年的天数再一天一天的去数。这里跳过一整年的操作细节处理如下:如果这一天是2月29,因为明天必不可能有2月29,故我们可以让总天数减一,然后让日期变为3月1,如果这一天在1月1日 ~ 2月28日之间,我们需要判断当年是否为闰年(看是否会跳过2月29这一天),如果这一天在3月1日 ~ 12月31日,我们需要判断明年是否为闰年(看是否会跳过2月29这一天)


代码:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int months[13] = {
    0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
int is_leap(int year)
{
    if (year % 4 == 0 && year % 100 || year % 400 == 0)
        return 1;
    return 0;
}
int get_days(int y, int m)
{
    if (m == 2) return months[m] + is_leap(y);
    return months[m];
}
int get_year_days(int y, int m)
{
    if (m <= 2) return 365 + is_leap(y);
    return 365 + is_leap(y + 1);
}
int main()
{
    int T;
    cin >> T;
    while (T -- )
    {
        int y, m, d, a;
        cin >> y >> m >> d >> a;
        if (m == 2 && d == 29) a --, m = 3, d = 1;
        while (a > get_year_days(y, m))
        {
            a -= get_year_days(y, m);
            y ++ ;
        }
        while (a -- )
        {
            if ( ++ d > get_days(y, m))
            {
                d = 1;
                if ( ++ m > 12)
                {
                    m = 1;
                    y ++ ;
                }
            }
        }
        printf("%04d-%02d-%02d\n", y, m, d);
    }
    return 0;
}



目录
相关文章
成绩排序2 (清华大学考研机试题)
成绩排序2 (清华大学考研机试题)
102 0
成绩排序2 (清华大学考研机试题)
成绩排序 (清华大学考研机试题)
成绩排序 (清华大学考研机试题)
123 0
成绩排序 (清华大学考研机试题)
|
机器学习/深度学习
[家里蹲大学数学杂志]第034期中山大学2008年数学分析考研试题参考解答
1  (每小题6分,共48分)  (1) 求$\lim\limits_{x \to 0+}x^x;$ 解答:  $$\begin{eqnarray*}\textrm{ 原式} & = & \lim\limits_{x \to 0+}e^{x\ln x} = \lim\limits_{x \to ...
771 0
|
Perl
[再寄小读者之数学篇](2014-04-20 [浙江大学 2014 年高等代数考研试题] 相似于对角阵的一个充分条件)
设 ${\bf X},{\bf Y}$ 分别为 $m\times n$ 与 $n\times m$ 阵, 且 $$\bex {\bf Y}{\bf X}={\bf E}_n,\quad {\bf A}={\bf E}_m+{\bf X}{\bf Y}.
678 0
|
Perl
浙江大学2009年数学分析考研试题第7题参考解答
题目. 设 $f(x)$ 在 $[a,b]$上 可导, 导函数 $f'(x)$ 在 $[a,b]$ 上单调下降, 且 $f'(b)>0$. 证明: \[ \sev{\int\limits_a^b\cos f(x)\rd x}\leq \frac{2}{f'(b)}.
615 0
|
Perl
[再寄小读者之数学篇](2014-04-20 [苏州大学数学专业考研复试试题] 解析函数有特定表达式的一个充分条件)
设 $f$ 在 $D=\sed{z\in\bbC;\ |z|\leq 1}$ 上除点 $z_0\in D$ 外处处解析, 且满足 (1) 在 $D$ 内 $f$ 没有零点; (2) $z\in \p D\ra f(z)\in \p D$; (3) $z_0$ 是 $f$ 的一阶极点.
629 0
|
机器学习/深度学习
[再寄小读者之数学篇](2014-04-18 from 352558840@qq.com [南开大学 2014 年高等代数考研试题]行列式的计算)
(2014-04-18 from 352558840@qq.com [南开大学2014年高等代数考研试题]) 设 $n$ 阶行列式 $\sev{\ba{cccc} a_{11}&\cdots&a_{1n}\\ \vdots&\ddots&\vdots\\ a_{n1}&\cdots&a_{nn} \ea}=1,$ 且满足 $a_{ij}=-a_{ji}, i,j=1,2,\cdots,n$.
984 0
[再寄小读者之数学篇] (2014-04-18 from 352558840@qq.com [南开大学 2014 年高等代数考研试题]一个秩等式)
(2014-04-18 from 352558840@qq.com [南开大学 2014 年高等代数考研试题]) 设 ${\bf A}$ 为 $s\times n$ 矩阵. 证明: $$\bex s-\rank({\bf E}_s-{\bf A}{\bf A}^T)=n-\rank({\bf E}_n-{\bf A}^T{\bf A}).
1213 0

热门文章

最新文章

  • 1
    2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
    47
  • 2
    2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    45
  • 3
    2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    50
  • 4
    2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    52
  • 5
    2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    39
  • 6
    2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    71
  • 7
    2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    37
  • 8
    2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    45
  • 9
    2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    42
  • 10
    通义灵码在考研C语言和数据结构中的应用实践 1-5
    123