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

今年的第几天?

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

关键在于:

判断闰年的公式

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

全部评论

相关推荐

去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务