EOJ 3322 万年历(历史题)
为什么说是历史题?
来自某百科:
罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。
所以怎么算星期几?
蔡勒公式(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为年份后两位。
- 1582.10.4后:
基姆拉尔森公式(Kim larsson calculation formula):
w=(d+2m+[3(m+1)5]+y+[y4]−[y100]+[y400]+1)%7w=(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 万年历(历史题)相关推荐
- 时间计算题100道_2019四校及分校自招开放日情况汇总(含时间安排、考试内容难度、到场人数等)...
点击上方"上海初升高",选择"星标公众号" 回复"加群"就能加入上万家长信赖的升学群 受到疫情的影响,今年各市重点的自招开放日报名迟迟没有提 ...
- 我一个理科生造的AI,怎么就去做历史高考题了呢?
郭一璞 发自 海边边 量子位 报道 | 公众号 QbitAI 文综提分哪家强?上海交大找AI. 之所以这么说,是因为arXiv上出现了一篇论文,一个可以答高考历史题的AI,还能给高考文综的历史题&q ...
- php 做一个题目木选项,这才是题库!《一站到底》升级题库8000道,站神邀你来挑战!...
答爆题库 "厦大版何以琛" 邱汐岩 一站到底五周年巅峰会站神之神 南大校草蒲熠星 从历史.常识.诗词.建筑.地理.运动.数学.著作到饮食.服饰.方言.风俗.发明.文物.器物等.可以 ...
- 1万3千多初中生物题库ACCESS数据库
这段时间破解了中高学生知识题库,有高中英语题库.小学英语题库.初中地理题库.初中历史题库.高中历史题库.初中生物题库,数据表结构都一样,今天发的这份是上万条的初中生物题库,截图包含所有字段,截图下方有 ...
- 如何实现随机题库生成
背景描述: 对于每一个不同的用户,从题库里随机抽取题目, 抽取的题目都是该用户未抽取过的,每个用户产生的考卷不相同. 解决方案: 方法一:使用bitSet保存用户历史题集 内存占用分析:百万级用户*万 ...
- 逼学生作弊的AI阅卷老师
边策 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 上学的时候,老师一定教导过你:遇到不会的问答题,就算是瞎写,也要随便写两句.也许阅卷老师心情好,可能会酌情给分呢. 老师会不会给分, ...
- 机器学习算法清单!附Python和R代码
来源:数据与算法之美 本文约6000字,建议阅读8分钟. 通过本文为大家介绍了3种机器学习算法方式以及10种机器学习算法的清单,学起来吧~ 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人 ...
- 10 种机器学习算法的要点(附 Python 和 R 代码)(转载)
10 种机器学习算法的要点(附 Python 和 R 代码)(转载) from:https://zhuanlan.zhihu.com/p/25273698 前言 谷歌董事长施密特曾说过:虽然谷歌的无人 ...
- 10 种机器学习算法的要点
前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明.更个性化的技术. 也许我们生活在人类历史上最关键的时期:从使用大 ...
最新文章
- java责任链模式的三种方式,分享一点面试小经验
- 进入“高画质手游时代”?《天谕》手游首次采用的这项技术有多强大
- Android之如何实现阿拉伯版本(RTL)的recycleView的网格布局
- 20款漂亮的长阴影 LOGO 设计作品【附免费生成工具】
- Linux的铜墙铁壁:防火墙之iptables
- 前端周记20190211-20190215
- Expression Blend学习5控件
- unity的函数生命周期
- 打开gedit_使用 gedit 文本编辑器优化你的 GNOME 体验 | Linux 中国
- php宠物管理系统源码,爱心宠物医院管理系统
- 64qam星座图matlab,16QAM_星形和矩形星座图调制解调MATLAB代码(最新整理)
- O365 Onedrive使用手册
- Office操作技巧——利用Excel实现文件夹批量重命名
- “电脑开的热点手机连接不上”的问题寻解过程记录
- 自动对焦模块理论基础及其硬件实现浅析(二)
- 预训练模型(PTMs)发展史
- Codeforces Round #176 (Div. 2) D. Shifting(模拟,STLdeque应用)
- adguard home上网慢_分享一下AdGuard HOME的使用情况和几条规则。
- java_系列3_数组
- Android ocr识别文字介绍(文字识别)