该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
题目描述
已知 2007 年 10 月 10 日,请求出 nn 天后是几月几号
#include
using namespace std;
int y(int a);
int judge(int year, int month, int day);
int main()
{
int year = 2007, month = 10, day = 10, n;
while (cin>>n)
{
day=10+n;
while (day > 31 || !judge(year, month, day))
{
if (day >= 365 && y(year) == 0)
day -= 365, year++;
else if (day >= 366 && y(year))
day -= 366, year++;
else
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
day -= 31, month++;
else if (month == 4 || month == 6 || month == 7 || month == 11)
day -= 30, month++;
else if (month == 2 && y(year))
day -= 29, month++;
else if (month == 2 && y(year) == 0)
day -= 28, month++;
if (month > 12)
month-=12, year ++;
}
}
cout << year << "-" << month << "-" << day<
}
return 0;
}
int y(int a)
{
if (a % 400 == 0 || a % 4 == 0 && a % 100 != 0)
return 1;
else return 0;
}
int judge(int year, int month, int day)
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
if (day <= 31)return 1; else return 0;
else if (month == 4 || month == 6 || month == 9 || month == 11)
if (day <= 30)return 1; else return 0;
else if (month == 2 && y(year))
if (day <= 29)return 1; else return 0;
else if (month == 2 && y(year) == 0)
if (day <= 28)return 1; return 0;
}