C/C++-星系炸弹
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。
答案:(5分)
code:
//LQ(7)C/C++2-星系炸弹
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int isleapyear(int year){
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
return 1;
else return 0;
}
int getmonth(int m,int y){
switch(m){
case 1:return 31;
case 2:return 28 + isleapyear(y);
case 3:return 31;
case 4:return 30;
case 5:return 31;
case 6:return 30;
case 7:return 31;
case 8:return 31;
case 9:return 30;
case 10:return 31;
case 11:return 30;
case 12:return 31;
}
}
int main(){
int year = 2014,month = 11,day = 9;
int cnt = 1000;
while(cnt > 366){
year++;
cnt -= (365+isleapyear(year));
}
while(cnt > 31){
cnt -= getmonth(month,year);
month++;//一开始搞错了顺序(应该先减再加)导致少了一天
if(month == 13){
month = 1;
year++;
}
}
while(cnt){
day++;
cnt--;
if(day == 32){
month = 8;
day = 1;
}
}
cout << year << "-" << month << "-" << day << endl;
return 0;
}
//2017-08-05
也可以用Excel或者Windows上的科学计算器计算日期