【寒假每日一题】十三号星期五(个人练习)详细题解+推导证明(第十三天)

前言

这一周的题,真的是很扎实的基础题。

今天的题目是来自usaco training 1.2。

最近在家呆的有时候会有一点焦虑。
在这里插入图片描述

题目

十三号星期五真的很不常见吗?

每个月的十三号是星期五的频率是否比一周中的其他几天低?

请编写一个程序,计算 N 年内每个月的 13 号是星期日,星期一,星期二,星期三,星期四,星期五和星期六的频率。

测试的时间段将会开始于 1900 年 1 月 1 日,结束于 1900+N−1 年 12 月 31日。

一些有助于你解题的额外信息:

1900 年 1 月 1 日是星期一。
在一年中,4 月、6 月、9 月、11 月每个月 30 天,2 月平年 28 天,闰年 29 天,其他月份每个月31天。
公历年份是 4 的倍数且不是 100 的倍数的年份为闰年,例如 1992 年是闰年,1990 年不是闰年。
公历年份是整百数并且是 400 的倍数的也是闰年,例如1700年,1800年,1900年,2100年不是闰年,2000年是闰年。
输入格式
共一行,包含一个整数 N。

输出格式
共一行,包含七个整数,整数之间用一个空格隔开,依次表示星期六,星期日,星期一,星期二,星期三,星期四,星期五在十三号出现的次数。

数据范围
1≤N≤400

输入样例:
20
输出样例:
36 33 34 33 35 35 34

在这里插入图片描述

详细题解

写法1 O ( n ) O(n) O(n)

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int weekdays[7];

int main()
{
    int n;
    cin >> n;
    
    int days = 0;
    for (int y = 1900; y < 1900 + n; ++ y )
    {
        for (int m = 1; m <= 12; ++ m )
        {
            weekdays[(days + 12) % 7] ++;
            days += months[m];
            if (m == 2)
                if ((y % 100 && y % 4 == 0) || (y % 400 == 0))
                    ++ days;
        }
    }
    
    for (int i = 5, j = 0; j < 7; i = (i + 1) % 7, ++ j )
        cout << weekdays[i] << " ";
    cout << endl;
    
    return 0;
}

毫无疑问,这是一个枚举的题,需要注意的是闰年啥的。

最后提交,AC😁
在这里插入图片描述

推导证明

首先需要注意的是,十三号,即不是从月初一号开始算的;

其次需要注意的是,闰年的二月份是29天,但是闰年的条件需要注意;

最后需要注意的是,输出的顺序是从周五开始的。

举一反三

掌握两种方法的互相优化,如果面试官需要更低的时间复杂度,那么可以使用空间复杂度去置换,如果面试官需要更低的空间复杂度,或者不需要额外的空间复杂度,那么使用双指针。

总结

继续努力,坚持更新,13th打卡。

推荐一个神剧,犯罪心理
在这里插入图片描述

在这里插入图片描述
犯罪心理研究小组隶属FBI,他们跨州行动,主要针对连环杀人案,从嫌疑人的犯罪心理和行为模式入手建立人物侧写,圈定罪犯的性别、年龄、职业特征、居住环境乃至成长经历,从而预测罪犯下一步行为,直至缉拿罪犯。他们的成员包括:高智商、强记忆力的少年天才斯拜瑟尔·瑞德博士(马修·格雷·古柏勒 Matthew Gray Gubler 饰)——负责数据和资料分析;外冷内热的硬汉阿伦·哈奇(托马斯·吉布森 Thomas Gibson 饰)——沟通能力极强,波多黎各小伙德里克·摩根(谢默·摩尔 Shemar Moore 饰)——强制性犯罪行为专家;打扮招摇的小胖妹佩妮洛普·格西娅(克里斯汀·范奈丝 Kirsten Vangsness 饰)——数据库专家,美女媒体联络员JJ(A·J·库克 A.J. Cook 饰)等,在老探员戴维·罗西(乔·曼特纳 Joe Mantegna 饰)带领下,飞往全美各地,展开一场场缉凶行动。

很棒!!!
在这里插入图片描述

我是管小亮 CSDN认证博客专家 TensorFlow PyTorch 图像处理
纸上得来终觉浅,绝知此事要躬行

包括但不局限于机器学习,深度学习,自然语言处理,计算机视觉,知识图谱,还有Python,C++,TensorFlow,Pytorch,Keras,PaddlePaddle等,不定时分享资源(电子书/项目/工具),学习路线,思考,面经等!!!
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页