在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。
这是蓝桥杯大学生B组的第二题是一道填空题,可能有很多方法得到答案,但是我还是忍不住用编程的方法解决了这个问题,代码比较拙劣 凑合这看一下。
整体思想就是,先判断 2014年以及之后的几年是不是闰年, 然后1000天一天一天的加,没加一次判断一次月份,和日数,如果日数大于了30或者31天 且月份小于12 月份加1,否则年份加1,年和月 每一次加1 日数都要置为1, 如果是2月份 就要判断当前年是不是闰年 闰年 2月份就是 29天 否则 就是28天,最后求出结果。
如果月份
C语言源码 :
#include<stdio.h>
int main(){
int y=2014,m=11,d=9;
int days[5];
int j=0;
int sumday=1000;
for(y;y<2019;y++){
if((y%4==0&&y%100!=0)||y%400==0){
days[j++]=366;
}
else days[j++]=365;}
j=0,y=2014;
while(sumday--){
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
if(d<31){
d+=1;
}
else {
if(m<12){
m+=1;
d=1;
}
else{
y++;
m=1;
d=1;
}
}
}
else if(m==4||m==6||m==9||m==10||m==11){
if(d<30){
d+=1;
}
else {
if(m<12){
m+=1;
d=1;
}
else{
y++;
m=1;
d=1;
}
}
}
else if(m==2){
int sum=0;
if(y==2014){
sum=days[0];
}
if(y==2015){
sum=days[1];
}
if(y==2016){
sum=days[2];
}
if(y==2017){
sum=days[3];
}
if(y==2018){
sum=days[4];
}
if(sum==365){
if(d<28){
d+=1;
}
else{
m+=1;
d=1;
}
}
else{
if(d<29){
d+=1;
}
else{
m+=1;
d=1;
}
}
}
}
printf("%d-%02d-%d",y,m,d);
return 0;
}
最后结果