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

今年的第几天?

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

关键在于:

判断闰年的公式

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

全部评论

相关推荐

05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-04 15:20
牛客61197583...:看到室友一个个没怎么学通过关系直接入职或者接到面试,真的很难受。八股不知道背了多少遍,hot100也刷了1.5遍了,但就是没有面试的机会,唉
点赞 评论 收藏
分享
06-27 18:53
门头沟学院 Java
这样才知道自己不适合搞代码,考公去咯
只爱喝白开水:我也发现不适合搞代码,打算转非技术方向了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务