蓝桥杯--星系炸弹--算年月--Excel

在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

请填写该日期,格式为 yyyy-mm-dd  即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。
---------------------------
运行结果:2017-08-05
---------------------------
 直接用Excel来做: Excel其实是用一个实数来存储日期,这个实数的整数部分,就是 1900年1月1日(缺陷所在) 到当前日期的间隔天数,所以日期与整数间,可以直接做加减运算。 
 有时候日期小数部分的值非0,小数部分就是对该天24小时的精确指定。

Excel是很强大的,闲着无聊的同学,也可以用下图的方式把日期改成题目要求的格式: 

具体操作函数:

--------------------------------
#include<iostream>
using namespace std;
int main(){
    int leap[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
                     {0,31,29,31,30,31,30,31,31,30,31,30,31}};
    int record = 1000;
    int year = 2014;
    int month = 11;
    int day = 9;
//  while(record > 365){
//      year++;
//      int temp = ((year%4==0&&year%100!=0)||(year%400==0));//is leap year?
//      if(temp) record = record - 366;
//      else record = record - 365;
//  }
//  while(record >=31){
//      int temp = ((year%4==0&&year%100!=0)||(year%400==0));
//      record = record - leap[temp][month];
//      month++;
//      if(month == 13){
//          month = 1;
//          year++;
//      }
//  }
    while(record > 0){
        int temp = ((year%4==0&&year%100!=0)||(year%400==0));
        record--;
        day++;
        if(day > leap[temp][month]){
            day = 1;
            month++;
            if(month == 13){
                month = 1;
                year++;
            }
        }
    }
    cout<<year<<endl;
    cout<<month<<endl;
    cout<<day<<endl;
    return 0;
}
 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值