题解 | #今年的第几天?#

今年的第几天?

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);
    }
}

关键在于:

判断闰年的公式

先把每个月的天数存一个数组(复习了数组的存法)

全部评论

相关推荐

HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务