为什么说是历史题?


来自某百科

罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。

所以怎么算星期几?


  1. 蔡勒公式(Zeller formula):

    • 1582.10.4后:

      w=(y+[y4]+[c4]−2c+[13(m+1)5]+d−1)%7

      w=(y+[\frac{y}{4}]+[\frac{c}{4}]-2c+[\frac{13(m+1)}{5}]+d-1)\%7

    • 1582.10.4及之前:
      w=(y+[y4]+[c4]−2c+[13(m+1)5]+d+2)%7

      w=(y+[\frac{y}{4}]+[\frac{c}{4}]-2c+[\frac{13(m+1)}{5}]+d+2)\%7

    其中m, d对应月日,c为年份前两位(世纪数减1),y为年份后两位。

  2. 基姆拉尔森公式(Kim larsson calculation formula)

    w=(d+2m+[3(m+1)5]+y+[y4]−[y100]+[y400]+1)%7

    w=(d+2m+[\frac{3(m+1)}{5}]+y+[\frac{y}{4}]-[\frac{y}{100}]+[\frac{y}{400}]+1)\%7

    需要注意的是,基姆拉尔森公式的结果为0时表示周一,6表示周日,以此类推。

注意事项


  • 两个公式都需要把每年的1,2两月看作上一年的13,14两月
  • 另有一种需要事先计算年月基数表的计算方法,由于较繁琐这里不再赘述。

代码


(仅以蔡勒公式为例)

#include <stdio.h>void calc_day(int y, int m, int d)
{if (m == 1 || m == 2){                                              //1月2月情况特判--y;m += 12;}int c = y / 100;                                                    //取年份前两位int yy = y - c * 100;                                               //取年份后两位int day = yy + yy / 4 + c / 4 - 2 * c + 13 * (m + 1) / 5 + d - 1;   //蔡勒公式if (y <= 1582 && m <= 10 && d <= 4) day += 3;                       //判断是否在1582年10月4日前while (day < 0) day += 7;                                           //结果可能为负,这里避免了容易出错的负数取模运算day %= 7;switch(day){case 1: printf("Monday\n");break;case 2: printf("Tuesday\n");break;case 3: printf("Wednesday\n");break;case 4: printf("Thursday\n");break;case 5: printf("Friday\n");break;case 6: printf("Saturday\n");break;default: printf("Sunday\n");}return;
}int main(void)
{int y, m, d;scanf("%d-%d-%d", &y, &m, &d);calc_day(y, m, d);return 0;
}

公式证明


好像不会╥﹏╥

EOJ 3322 万年历(历史题)相关推荐

  1. 时间计算题100道_2019四校及分校自招开放日情况汇总(含时间安排、考试内容难度、到场人数等)...

    点击上方"上海初升高",选择"星标公众号" 回复"加群"就能加入上万家长信赖的升学群 受到疫情的影响,今年各市重点的自招开放日报名迟迟没有提 ...

  2. 我一个理科生造的AI,怎么就去做历史高考题了呢?

    郭一璞 发自 海边边  量子位 报道 | 公众号 QbitAI 文综提分哪家强?上海交大找AI. 之所以这么说,是因为arXiv上出现了一篇论文,一个可以答高考历史题的AI,还能给高考文综的历史题&q ...

  3. php 做一个题目木选项,这才是题库!《一站到底》升级题库8000道,站神邀你来挑战!...

    答爆题库 "厦大版何以琛" 邱汐岩 一站到底五周年巅峰会站神之神 南大校草蒲熠星 从历史.常识.诗词.建筑.地理.运动.数学.著作到饮食.服饰.方言.风俗.发明.文物.器物等.可以 ...

  4. 1万3千多初中生物题库ACCESS数据库

    这段时间破解了中高学生知识题库,有高中英语题库.小学英语题库.初中地理题库.初中历史题库.高中历史题库.初中生物题库,数据表结构都一样,今天发的这份是上万条的初中生物题库,截图包含所有字段,截图下方有 ...

  5. 如何实现随机题库生成

    背景描述: 对于每一个不同的用户,从题库里随机抽取题目, 抽取的题目都是该用户未抽取过的,每个用户产生的考卷不相同. 解决方案: 方法一:使用bitSet保存用户历史题集 内存占用分析:百万级用户*万 ...

  6. 逼学生作弊的AI阅卷老师

    边策 萧箫 发自 凹非寺  量子位 报道 | 公众号 QbitAI 上学的时候,老师一定教导过你:遇到不会的问答题,就算是瞎写,也要随便写两句.也许阅卷老师心情好,可能会酌情给分呢. 老师会不会给分, ...

  7. 机器学习算法清单!附Python和R代码

    来源:数据与算法之美 本文约6000字,建议阅读8分钟. 通过本文为大家介绍了3种机器学习算法方式以及10种机器学习算法的清单,学起来吧~ 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人 ...

  8. 10 种机器学习算法的要点(附 Python 和 R 代码)(转载)

    10 种机器学习算法的要点(附 Python 和 R 代码)(转载) from:https://zhuanlan.zhihu.com/p/25273698 前言 谷歌董事长施密特曾说过:虽然谷歌的无人 ...

  9. 10 种机器学习算法的要点

    前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明.更个性化的技术. 也许我们生活在人类历史上最关键的时期:从使用大 ...

最新文章

  1. java责任链模式的三种方式,分享一点面试小经验
  2. 进入“高画质手游时代”?《天谕》手游首次采用的这项技术有多强大
  3. Android之如何实现阿拉伯版本(RTL)的recycleView的网格布局
  4. 20款漂亮的长阴影 LOGO 设计作品【附免费生成工具】
  5. Linux的铜墙铁壁:防火墙之iptables
  6. 前端周记20190211-20190215
  7. Expression Blend学习5控件
  8. unity的函数生命周期
  9. 打开gedit_使用 gedit 文本编辑器优化你的 GNOME 体验 | Linux 中国
  10. php宠物管理系统源码,爱心宠物医院管理系统
  11. 64qam星座图matlab,16QAM_星形和矩形星座图调制解调MATLAB代码(最新整理)
  12. O365 Onedrive使用手册
  13. Office操作技巧——利用Excel实现文件夹批量重命名
  14. “电脑开的热点手机连接不上”的问题寻解过程记录
  15. 自动对焦模块理论基础及其硬件实现浅析(二)
  16. 预训练模型(PTMs)发展史
  17. Codeforces Round #176 (Div. 2) D. Shifting(模拟,STLdeque应用)
  18. adguard home上网慢_分享一下AdGuard HOME的使用情况和几条规则。
  19. java_系列3_数组
  20. Android ocr识别文字介绍(文字识别)

热门文章

  1. IE浏览器打不开网页
  2. [算法题]返回数组A的元素组成的小于n的最大数
  3. 13种APP推广手段与渠道
  4. 【nodejs】数据统计平台碰到的坑
  5. 心电算法准确性评价总结
  6. 谷歌创始人布林申请离婚:身价930亿美元 曾出轨前妻闺蜜
  7. 云原生背景下的运维价值思考与实践
  8. 新技术焦虑症?来这里拿药 ~~
  9. python时间序列平稳性检验_Python量化投资基础:时间序列的平稳性检验
  10. react+mobx+jquery构建大型工具项目经验总结