描述
根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
进阶:时间复杂度:O(n) ,空间复杂度:O(1)
输入描述:
输入一行,每行空格分割,分别是年,月,日
输出描述:
输出是这一年的第几天
示例1
输入:
2012 12 31
复制
输出:
366
示例2
输入:
1982 3 4
复制
输出:
63
#include <iostream>
using namespace std;
int main() {
static int monthdays[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int year, month, day;
while (cin >> year >> month >> day) { // 注意 while 处理多个 case
// 使用while的话,可以不断接收输入;按ctrl + c可以结束循环。
int n = 0;
//计算1-month-1月的天数
for (int i = 1; i < month; i++)
{
n += monthdays[i];
}
//累加month那个月的天数
n += day;
//如果是闰年,再加1;
if (month > 2 &&((year % 4 == 0 && year % 100 != 0 ) || (year % 400 == 0)))
{
n += 1;
}
cout << n << endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")