返回首页 返回题库

时间跨越

C++ 入门 GESP二级真题 #日期计算

题目描述

题面描述

假设现在是 y 年 m 月 d 日 h 时,k 小时后是 y' 年 m' 月 d' 日 h' 时,对于给定的 y,m,d,h,k,小杨想请你帮他计算出对应的 y',m',d',h' 是多少。

输入格式

输入包含五行,每行一个正整数,分别代表 y,m,d,h,k。

输出格式

输出四个正整数,代表 y',m',d',h',整数之间用空格分隔。

样例1

输入:

2008
2
28
23
1

输出:

2008 2 29 0

样例2

输入:

2023
12
31
23
2

输出:

2024 1 1 1

闰年判断规则

  • 普通闰年:年份能被 4 整除,但不能被 100 整除。
  • 世纪闰年:年份能被 400 整除。
  • 满足以上任意一条规则的年份就是闰年,否则是平年。

数据范围

对于全部数据,保证有 2000≤y≤3000,1≤m≤12,1≤d≤31,0≤h≤23,1≤k≤24 。数据保证为合法时间。


时间限制

1.0 s

内存限制

512.0 MB

💡 查看提示(先自己想一想再看)
考察知识点:条件判断、日期时间计算、闰年判断规则。解题思路:先将小时数累加k,处理小时溢出到天的情况;再根据当前月份和年份判断当月的天数,处理天溢出到月的情况;最后处理月溢出到年的情况。常见易错点:闰年2月的天数判断错误,月份天数记忆错误,跨月跨年的边界处理不当。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 6 浏览

讨论(0)