题目
星系炸弹
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。 有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19 请严格按照格式书写。不能出现其它文字或符号。
题目分析
本题用 Excel 或者用程序计算都可以 (用 Excel 计算的方法本文不做过多介绍).
这里需要注意的就是闰年和非闰年以及大月小月和 2 月, 闰年的 2 月有 29 天, 非闰年的 2 月有 28 天, 因此, 闰年有 366 天, 非闰年有 365 天.
另外, 根据示例, 放置炸弹的那天按第 0 天计算.
本题正确答案是:
2017-08-05
程序:
#include<iostream> #include<bits/stdc++.h> using namespace std; int main(){ int sum=1000; int Mdays[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int Y=2014; int M=11; int D=9; //2014 年 11 月 09 日距离爆炸有 1000 天, 在此循环 1000 次 for(int i=1;i<=sum;i++){ D++; //每循环一次则日数加 1 if(D>Mdays[M-1]){ //如果日数大于 11 月的日数, 则日数重置为 1, 月数加 1 D=1; M++; if(M>12){ //如果月数大于 12, 则月数重置为 1, 年数加 1. M=1; Y++; //新开始一年之后, 对是否为闰年进行判断 if((Y%400==0)||(Y%4==0&&Y%100!=0)){ Mdays[1]=29; }else{ Mdays[1]=28; } } } } cout<<Y<<"-"<<M<<"-"<<D<<endl; return 0; }