1.模拟题一般是一类头疼的问题,有时候一些错误更是让我们红橙作伴,潇潇洒洒的交一发wa一发
2.有些模拟题很简单,看一下按照题目的意思模拟一遍就可以了,只需要注意一些细节就好,还有些模拟题虽然看起来简单但却无从下手
下面这个几个模拟题对于蒟蒻的我来说是很好的学习例题
不为什么就想记录一下自己学习的过程,把自己如何思考,如何学习,如何解决一一说清楚,希望你们也能从中受益~
wjw的星期五
题目描述
wjw最近运气极其差,什么roll点1-100连着十次都是个位数啊,买个珍珠奶茶没有珍珠啊,吃方便面没有调料包啊…
迷信的wjw觉得,一定是因为这个月的13号正好是星期五,才会导致他的运气这么差。
现在他想知道,在某个年份中,有多少个月的13号是星期五,这样他才可以提前做好心理准备。
PS.已知1998年1月1日是星期四,输入的年份肯定大于或等于1998年。
输入
input
输入只有一行,表示年份(大于等于1998年)
输出
output
输出只有一行,表示这一年中有多少个月的13号是星期五
样例输入
1998
样例输出
3
提示
说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;
PS:
这种题目第二次遇见,遇见的时候我想起了第一次那种手无足措的感觉,虽然事后看了大佬的题解,但却用了很长时间来消化,所以我觉得有必要来记录自己学习的过程,虽然艰辛,但是得到AC的那一刻,内心是喜悦的,谁不是一直在追求AC的路上呢?
分析题目
题目是想找出一年中有多少个月份的13号是星期五,很显然这是一道模拟题
- 首先我们要定义两个数组,分别储存平年以及闰年1–12月份的天数
- 其次需要用一个函数判断是否是闰年,这样会方便许多
- 题目已知最初条件“已知1998年1月1日是星期四”,小小的推理一遍,我们就知道1998年1月9号是星期五(别问我是怎么知道的,就是知道
强势)这样我们只需找到每月13号减去最初的1月9号是所剩下的否是7的倍数,如果是,就让ans++,这样题目就清晰了许多。
AC代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 1e6 + 5;
int a[13] = {
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int b[13] = {
0, 31, 29, 31, 30, 31, 30, 31,