题解 | #今年的第几天?#
今年的第几天?
https://www.nowcoder.com/practice/ae7e58fe24b14d1386e13e7d70eaf04d
#include<iostream>
using namespace std;
//预处理出所有月份的天数并保存
//需要处理数据时,只用O(1)的时间复杂度读出稍加处理
int daytab[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
//为了方便,用月份直接对应列,第0列空出来
//0行为平年
//1行为闰年
int main() {
int year;
int month;
int day;
int count = 0;
int flag = -1;
while (cin >> year >> month >> day) {
//闰年判断规则:
//能被4整除,且不能被100整除
//或能被400整除
//则为闰年
//(year%4==0&&year%100!=0)||(year%400==0)
count = 0;
flag = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
for (int i = 1; i < month; i++) {
count += daytab[flag][i];
}
count += day;
printf("%d\n", count);
//printf("%d,%d,%d\n",year,month,day);
}
}
关键在于:
判断闰年的公式
先把每个月的天数存一个数组(复习了数组的存法)
查看3道真题和解析