题解 | #今年的第几天?#
今年的第几天?
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); } }
关键在于:
判断闰年的公式
先把每个月的天数存一个数组(复习了数组的存法)