**

Friday the Thirteenth 黑色星期五

**

解题思路来自NOCOW

题目:

13 号又是星期五是一个不寻常的日子吗?

13 号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在 n 年里 13
日落在星期一,星期二…星期日的次数.这个测试从 1900 年 1 月 1 日到
1900+n-1 年 12 月 31 日.n 是一个非负数且不大于 400.
这里有一些你要知道的:
1900 年 1 月 1 日是星期一.
4,6,11 和 9 月有 30 天.其他月份除了 2 月有 31 天.闰年 2 月有 29 天,平年 2 月有 28 天.
年份可以被 4 整除的为闰年(1992=4*498 所以 1992 年是闰年,但是 1990 年不是闰年)
以上规则不适合于世纪年.可以被 400 整除的世纪年为闰年,否则为平年.所以,1700,1800,1900 和
2100 年是平年,而 2000 年是闰年.

解题思路:

Friday e the h Thirteenth (friday)
按月为单位计算,模拟运算,1900 年 1 月 13 日是星期六(代号 1),下个月的 13 日就
是代号(1+31-1) mod 7+1 的星期。
因为数据小,所以不会超时。
当数据比较大时,可以以年为单位计算,每年为 365 天,mod 7 的余数是 1,就是说每
过一年所有的日和星期错一天,闰年第 1、2 月错 1 天,3 月以后错 2 天。这样,只要先求
出第一年的解,错位添加到以后的年即可。
详细分析:因为 1900.1.1 是星期一,所以 1900.1.13 就等于(13-1) mod7+1=星期六。这
样讲可能不太清楚。那么,我来解释一下:每过 7 天是一个星期。n 天后是星期几怎么算呢?
现在假设 n 是 7 的倍数,如果 n 为 14,那么刚好就过了两个星期,所以 14 天后仍然是星期
一。但如果是过了 15 天,那么推算就得到是星期二。这样,我们就可以推导出一个公式来
计算。(n 天 mod 7(一个星期的天数)+ 现在日期的代号) mod 7 就等于现在日期的代号 。
当括号内的值为 7 的倍数时,其代号就为 0。

接下来是我的思路

用两个数组记录闰年和平年每个月的天数
用取模的方法(如上)计算n天后是星期几
用days记录经过的天数,在每次循环后加上当前月份的天数即为下一个13号经过的天数
AC代码如下:

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{int n;         //total yearscin >> n;int pn[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int rn[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};map<int, int> week;long days = 13;for (int i = 1900; i < 1900 + n; i++){if (i%400==0){for (int j = 0; j < 12;j++){week[(days - 1) % 7 + 1] += 1;days += rn[j];}}if (i%100!=0&&i%4==0){for (int j = 0; j < 12;j++){week[(days - 1) % 7 + 1] += 1;days += rn[j];}}if ((i%100==0&&i%400!=0)||i%4!=0){for (int j = 0; j < 12;j++){week[(days - 1) % 7 + 1] += 1;days += pn[j];}}}cout << week[6] << " " << week[7] << " " << week[1] << " ";cout << week[2] << " " << week[3] << " " << week[4] << " " << week[5] << endl;return 0;
}

编程小白,如有错误,欢迎指正_.

Friday the Thirteenth 黑色星期五相关推荐

  1. USACO—1.1.3 Friday the Thirteenth 黑色星期五

    题目描述: 1.1.3 Friday the Thirteenth 黑色星期五 (friday.pas/c/cpp) 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序 ...

  2. USACO黑色星期五Friday the Thirteenth

    黑色星期五Friday the Thirteenth 嗯,虽然很水,但细节是真的多. 我闰年判断错了而且while循环都忘了(伤心) 题目描述 13号又是一个星期五.13号在星期五比在其他日子少吗?为 ...

  3. 黑色星期五 Friday The Thirteenth

    黑色星期五 洛谷P1202 这是一道很奇怪的题 我做了一遍 不会 两天后 会了

  4. 黑色星期五Friday the Thirteenth

    题目描述 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数.给出N年的一个周期,要求计算1900年1月1日至1900+N- ...

  5. 洛谷P1202 [USACO1.1]黑色星期五Friday the Thirteenth

    题目描述 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数.给出N年的一个周期,要求计算1900年1月1日至1900+N- ...

  6. [USACO1.1]黑色星期五Friday the Thirteenth

    https://www.luogu.org/problemnew/show/P1202 又学了一招重载++ /* *@Author: STZG *@Language: C++ */ #include ...

  7. 洛谷 P1202 模拟 - 黑色星期五 Friday the Thirteenth

    [题目描述] 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数.给出N年的一个周期,要求计算1900年1月1日至1900+ ...

  8. USACO Training Section 1.1黑色星期五Friday the Thirteenth

    题目描述 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数.给出N年的一个周期,要求计算1900年1月1日至1900+N- ...

  9. 黑色星期五Friday the Thirteenth [USACO 1.2]

    题目描述 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数.给出N年的一个周期,要求计算1900年1月1日至1900+N- ...

最新文章

  1. 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)
  2. 内存分配成功,但并未初始化
  3. kafka同一个group 消费两个topic吗_MQ: 一张图读懂kafka工作原理
  4. 在自己笔记本电脑上如何访问虚拟机的内容、包括可以使用ssh、访问tomcat、访问nginx
  5. Microsoft VBScript 编译器错误 错误原因 代码大全
  6. 前端学习(1494):表格案例--axios-搜索功能
  7. Spyder IDE中使用git
  8. 使用idea创建项目并通过git上传到码云
  9. BBS论坛系统需求说明书
  10. 教大家一个可以用迅雷全速下载百度网盘文件的方法
  11. PHP+Mysql 实现数据库增删改查
  12. 未转变者服务器载具名称,未转变者可以乘坐哪些车及载具参数介绍
  13. android 测网速方案,Android_检测当前网速
  14. aauto桌面小应用-简单番茄钟
  15. 电瓶车充电桩收费平台在福建学校的应用
  16. SAP ABAP ZBA_R002 查询用户下的角色
  17. 《Google Chrome:谷歌浏览器》 --不作恶,但可以恶心你
  18. 神经网络种类及应用领域,常用的神经网络有哪些
  19. Python(廖雪峰) 学习笔记(1)
  20. amd插帧技术如何开启_不要浪费那块屏幕,联想小新13 Pro AMD锐龙标压版视频插帧设置...

热门文章

  1. 程序员的故事: 拉里 埃里森
  2. 网络热评的牛年最红护肤品
  3. 加米谷:金融领域中的大数据应用
  4. 微量元素不足造成任何重大人体健康的影响
  5. ICLR 2023 Spotlight | Yoshua Bengio团队新作,生成拓展流网络
  6. windows下使用pycharm+pyinstaller生成可执行文件
  7. 2018年4月高等教育国际金融全国统一命题考试
  8. 铜陵三中2021高考成绩查询,铜陵2021高考最高分多少分,铜陵历年高考状元资料
  9. 乘风聚合图床源码 多接口
  10. Unreal Engine 4 —— GAS系统学习 (二十一) 为主角添加技能图标