在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,
则它在2015年1月16日爆炸。 有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。yyyy-mm-dd
int day_num(int year, int month, int day)
{
bool flag = false;
if (year % 4 == 0 || (year % 100 == 0 && year % 400 != 0))
flag = true;
if (month == 0)
return day;
if (month < 7)
{
if (month % 2 != 0)
{
return 31 + day_num(year, month - 1, day);
}
else
{
if (month == 2)
{
if (flag)
return 29 + day_num(year, month - 1, day);
else
return 28 + day_num(year, month - 1, day);
}
else
{
return 30 + day_num(year, month - 1, day);
}
}
}
else if (month >= 7 && month <= 8)
{
return 31 + day_num(year, month - 1, day);
}
else
{
if (month%2==0)
return 31 + day_num(year, month - 1, day);
else
return 30 + day_num(year, month - 1, day);
}
}
void get_data(int *year, int *month, int *day, int count)
{
bool flag = false;
if (*year % 4 == 0 || (*year % 100 == 0 && *year % 400 != 0))
flag = true;
for (int i = 0; i < count; i++)
{
*day += 1;
if (*month == 13)
{
*year += 1;
if (*year % 4 == 0 || (*year % 100 == 0 && *year % 400 != 0))
flag = true;
else
flag = false;
*month = 1;
}
if (*month == 4 || *month == 6 || *month == 9 || *month == 11)
{
if (*day == 31)
{
*month += 1;
*day = 1;
}
}
else if (*month == 1 || *month == 3 || *month == 5 || *month == 7 || *month == 8 || *month == 10 || *month == 12)
{
if (*day == 32)
{
*month += 1;
*day = 1;
}
}
else if (*month == 2)
{
if (flag)
{
if (*day == 30)
{
*month += 1;
*day = 1;
}
}
else
{
if (*day == 29)
{
*month += 1;
*day = 1;
}
}
}
}
}
int main(void)
{
clock_t start, finish;
double totaltime;
start = clock();
int year = 2014;
int month = 11;
int day = 9;
get_data(&year, &month, &day, 1000);
printf("%d--%d--%d\n", year,month,day);
finish = clock();
totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
printf("%lf", totaltime);
}
答案:2017–8--5