你给的代码输出超时了,有没有更优化的代码
时间: 2024-04-12 19:32:22 浏览: 13
非常抱歉给出的代码还是有问题,导致输出超时。下面是一个更优化的代码示例,可以正确计算给定年份和天数后的日期:
```cpp
#include <iostream>
using namespace std;
bool isLeap(int year) {
return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
}
void calculateDate(int year, int daysadd) {
int daysInMonth[13][2] = {{0, 0}, {31, 31}, {28, 29}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}};
int month = 1;
int day = 1;
while (daysadd > daysInMonth[month][isLeap(year)]) {
daysadd -= daysInMonth[month][isLeap(year)];
month++;
}
day += daysadd;
printf("%04d-%02d-%02d\n", year, month, day);
}
int main() {
int year, daysadd;
while (cin >> year >> daysadd) {
calculateDate(year, daysadd);
}
return 0;
}
```
这个代码与之前给出的代码几乎相同,只是在 `main` 函数中使用了 `while (cin >> year >> daysadd)` 来循环读取输入,而不是使用 `while (true)`。这样可以避免超时问题。
希望这次的代码能够满足你的需求,如果还有其他问题,请随时提问!