算法题每日一练 --- 第 5 天:星系炸弹
一、问题描述
在 X 星系的广袤空间中漂浮着许多 X 星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹 2015 年 11 月 1 日放置,定时为 1 日放置,定时为 15 天,则它在天,则它在 2015 年年 1 月月 16 日爆炸。
有一个贝塔炸弹,2014 年 11 月 9 日放置,定时为 1000 天,请你计算它爆炸的准确日期。
请输出该日期,格式为 yyyy-mm-dd 即 4 位年份 2 位月份 2 位日期。比如:2015-02-19
二、题目要求
考察
复制代码
运行限制
最大运行时间:1s
最大运行内存: 128M
三、问题分析
对于上面的问题,已知当前的时间是 2014 年 11 月 9 日,求解经过 1000 天后,日期是多少天。对于月份来说,我们用一个一维数组提前把 12 个月份的天数存储到数组中,其中 2 月份天数默认成 28 天。
复制代码
对于年份来说,首先判断是不是闰年,根据闰年规则“四年一闰,百年不闰,四百年一闰”,年份满足下列条件之一,则为闰年。
复制代码
如果判断出来是闰年,那么 2 月天数变为 29 天,不是闰年,2 月天数 28 天。
对于天数来说,有 1000 天,初始天数为 9 天,当满足月份,月份加一,天数变成一,重新计算。当月份大于 12 月时,需要将年份加一,月份变成一,天数不变。
四、编码实现
复制代码
五、输出结果
版权声明: 本文为 InfoQ 作者【知心宝贝】的原创文章。
原文链接:【http://xie.infoq.cn/article/24d785f096a81febfbb7f5380】。文章转载请联系作者。
评论