测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A28471. 时间跨越

填空题 较易

题目描述

时间跨越

题目描述

假设现在是 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' 。

样例


2008
2
28
23
1
2008 2 29 0 

数据范围

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

提示

闰年判断规则

  • 普通闰年:年份能被 4 整除,但不能被 100 整除。
  • 世纪闰年:年份能被 400 整除。

满足以上任意一条规则的年份就是闰年,否则是平年。


参考答案

#include <iostream> using namespace std; int main() { int y, m, d, h, k; cin >> y >> m >> d >> h >> k; h += k; if (h >= 24) { h -= 24; d += 1; int days = 0; if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) { days = 31; } else if (m == 4 || m == 6 || m == 9 || m == 11) { days = 30; } else if (m == 2) { if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) { days = 29; } else { days = 28; } } if (d > days) { d -= days; m += 1; if (m > 12) { m = 1; y += 1; } } } cout << y << " " << m << " " << d << " " << h << "\n"; return 0; }
上一题 下一题