首页 > 其他分享 >【题解】#373. 「USACO1.1」Friday the Thirteenth 题解(2023-07-01更新)

【题解】#373. 「USACO1.1」Friday the Thirteenth 题解(2023-07-01更新)

时间:2023-07-01 16:13:50浏览次数:62  
标签:知识点 USACO1.1 07 int 题解 31 2023

#373. 「USACO1.1」Friday the Thirteenth 题解

题目传送门

欢迎大家指出错误并联系这个蒟蒻

更新日志

  • 2023-02-01 17:20 文章完成
  • 2023-02-03 18:50 文章审核通过
  • 2023-02-03 19:17 修改了注释
  • 2023-05-25 20:25 修改了 $\LaTeX$
  • 2023-05-25 20:32 再次修改了 $\LaTeX$,感谢 ACRUSHj 提出错误
  • 2023-07-01 15:55 修改了代码

题目知识点

模拟+数学

闰年知识点

题意说明

写一个程序来计算在 $n$ 年里 $13$ 日落在星期一,星期二......星期日的次数。这个测试从 $1900$ 年 $1$ 月 $1$ 日到 $1900+n-1$ 年 $12$ 月 $31$ 日.n是一个非负数且不大于 $400$ 。请不要预先算好数据 !
很明显,这道题会考察到和年份有关的知识点(已在知识点中列出,欢迎查阅),但是总结一下就是四年一闰,百年不闰,四百年又闰。(不会的话去问小学老师

代码+解释

// #373. 「USACO1.1」Friday the Thirteenth
// code by:st20250113
#include <bits/stdc++.h> //伟大的万能头文件

using namespace std;

int a[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, b[8]; // a数组预处理每月天数,b数组用来存储答案
int n, c = 0;

int main() {
    cin >> n;
    for (int i = 1900; i < 1900 + n; i++) {
        int f = 0; // 闰年标记
        if ((i % 4 == 0) && (i % 100) || (i % 400 == 0)) {
            f = 1; // 判断是否为闰年,若成立则f赋值为真
        }
        for (int j = 1; j <= 12; j++) {
            int e = 0; // 如果为闰年,2月就要多一天,e在闰年情况下使2月的循环变量增大1
            if (f && j == 2)
                e = 1;
            for (int k = 1; k <= a[j] + e; k++) { // k循环日期,m[j]即j月的天数
                c++; // st每天增加
                if (k == 13) {
                    b[c % 7]++;
                }
            }
            // 防抄袭
            if (e == 1) {
                e = 0; // 2月用过后要清零
            }
        }
    }
    cout << b[6] << " " << b[0] << " " << b[1] << " " << b[2] << " " << b[3] << " " << b[4] << " " << b[5]; // 输出顺序是Sat Sun Mon Tue Wed Thu Fri
    return 0; // 华丽结束
}
// QYC最帅

标签:知识点,USACO1.1,07,int,题解,31,2023
From: https://www.cnblogs.com/szyawa/p/17519419.html

相关文章

  • 算法学习day04链表part02-24、19、0207、142
    packageSecondBrush.LinkedList.LL1;/***24.两两交换链表中的节点**/publicclassSwapNodesInPairs_24{publicListNodeswapPairs(ListNodehead){ListNodedummyhead=newListNode(-1);dummyhead.next=head;ListNodecur......
  • 【题解】#105. 「USACO1.3」Ski Course Design 题解(2023-07-01更新)
    #105.「USACO1.3」SkiCourseDesign题解题目传送门欢迎大家指出错误并联系这个蒟蒻更新日志2023-02-0117:20文章完成2023-02-0316:09文章审核通过2023-02-0422:15修改了注释2023-05-1621:44修改了$\LaTeX$2023-07-0115:59修改了代码题目知识点模拟+搜索......
  • 【题解】#68. 「NOIP2004」津津的储蓄计划 题解(2023-07-01更新)
    #68.「NOIP2004」津津的储蓄计划题解题目传送门欢迎大家指出错误并联系这个蒟蒻更新日志2023-02-0117:20文章完成2023-02-0316:09文章审核通过2023-02-0422:15修改了注释2023-05-2709:27修改了$\LaTeX$2023-07-0115:45修改了代码题目知识点模拟题目分析......
  • C/C++《数据结构课程设计》题目[2023-07-01]
    C/C++《数据结构课程设计》题目[2023-07-01]《数据结构课程设计》题目一、【大数四则运算】——线性表[习题描述]设计—个实现任意长的整数进行四则运算和幂次运算的演示程序。[基本要求]利用双向循环链表实现大数的存储,每个结点含一个整型变量。[实现提示]实现原理:任何一......
  • 参考资料------ 快速使用Python-Tkinter设计界面 方法与代码-20230701
    作者:干饭小熊猫链接:https://www.zhihu.com/question/68663671/answer/2519875621来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 1简介1.1Tkinter是什么?Tkinter是Python自带的GUI库,Python的IDEL就是Tkinter的应用实例。Tkinter可以看作是Tk......
  • 20230701水题选做
    CF1676D题意给定一个无根树,点从\(1\)到\(n\)编号。你需要给每个点分配一个正整数权值\(w_i\)。定义一个节点为好节点,当且仅当其权值等于所有相邻节点的权值之和。请最大化好节点的个数,并且在好节点个数最大的前提下最小化所有节点的权值和。分析我们先考虑一种特殊情况,......
  • CF1753 题解
    CF1753题解A首先我们发现,我们可以将序列一部分取反,将1变-1,-1变1的操作每次将总和增加2,所以如果初始和的绝对值为奇数则无解。我们发现,一段区间可以拆成若干个长度为2和1的小区间(+-+-+-+-....)变成(+-+-+-...)。我们假设初始都是长度为1的小区间,这时答案等于所有数的总和。我们......
  • JSR107
    JSR107JSR是JavaSpecificationRequests的缩写,Java规范请求,故名思议提交Java规范,JSR-107呢,就是关于如何使用缓存的规范,是java提供的一个接口规范,类似于JDBC规范,没有具体的实现,具体的实现就是ehcache等这些缓存解决方案。  JSR107核心接口JavaCaching(JSR-1......
  • P3975 [TJOI2015] 弦论 题解
    一、题目描述:给你一个长度为$n$的字符串,字符串由$26$个小写字母组成,求第$k$大的字串。给定参数$t$:$t=0:\位置不同的相同字串只算一个。$$t=1:\位置不同的相同字串算作多个。$若字串数量不足$k$个,输出$-1$。数据范围:$1\le......
  • 【js学习笔记十四】普通函数中的this指向问题解决方案_this
     目录前言导语 解决思路运行结果前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语歌谣歌谣......