题目:
和中国的节日不同,美国的节假日通常是选择某个月的第几个星期几这种形式,因此每一年的放假日期都不相同。具体规则如下:

  • 1月1日:元旦
  • 1月的第三个星期一:马丁·路德·金纪念日
  • 2月的第三个星期一:总统节
  • 5月的最后一个星期一:阵亡将士纪念日
  • 7月4日:美国国庆
  • 9月的第一个星期一:劳动节
  • 11月的第四个星期四:感恩节
  • 12月25日:圣诞节
    现在给出一个年份,请你帮忙生成当年节日的日期。

蔡勒公式:

蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。

#include <iostream>
#include <stdio.h>
using namespace std;int Zeller(int year, int month, int day)
{if (month == 1 || month == 2){month += 12;year--;}int y = year % 100;int c = year / 100;int w = ((c / 4) - 2 * c + y + (y / 4) + (13 * (month + 1) / 5) + day - 1) % 7;w = (w + 7) % 7;if (w == 0)w = 7;return w;
}int day_of_demand(int year, int month, int count, int d_of_week)
{int week = Zeller(year, month, 1);int day = 1 + (count - 1) * 7 + (7 + d_of_week - week) % 7;return day;
}void NewYear(int year)
{printf("%d-%02d-%02d\n", year, 1, 1);
}void MartinLuther(int year)
{int day = day_of_demand(year, 1, 3, 1);printf("%d-%02d-%02d\n", year, 1, day);
}void President(int year)
{int day = day_of_demand(year, 2, 3, 1);printf("%d-%02d-%02d\n", year, 2, day);
}void Fallensoldiers(int year)
{int week = Zeller(year, 6, 1);int day = 31 - ((week == 1) ? 6 : (week - 2));printf("%d-%02d-%02d\n", year, 5, day);
}void NationalDay(int year)
{printf("%d-%02d-%02d\n", year, 7, 4);
}void Labour(int year)
{int day = day_of_demand(year, 9, 1, 1);printf("%d-%02d-%02d\n", year, 9, day);
}void Thanks(int year)
{int day = day_of_demand(year, 11, 4, 4);printf("%d-%02d-%02d\n", year, 11, day);
}void Christmas(int year)
{printf("%d-%02d-%02d\n", year, 12, 25);
}int main()
{int year;while(cin >> year){NewYear(year);MartinLuther(year);President(year);Fallensoldiers(year);NationalDay(year);Labour(year);Thanks(year);Christmas(year);cout << endl;}return 0;
}

【刷题】美国节日、蔡勒公式(一个推算周几的计算公式)相关推荐

  1. HDU 6112 今夕何夕 蔡勒公式

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6112题意:中文题目 分析:关键点在与如何计算一个日期是星期几,这个可以通过蔡勒公式来计算.基姆拉尔森计 ...

  2. 【每日一题】美国节日(基姆拉尔森公式、蔡勒公式)

    [每日一题]美国节日(基姆拉尔森公式.蔡勒公式)   相关文章:   [每日一题]一周中的第几天(基姆拉尔森公式的应用)   [每日一题]美国节日(基姆拉尔森公式.蔡勒公式)   [每日一题]计算日期 ...

  3. [每日一题] 62. 美国节日(日期计算、蔡勒公式)

    1. 题目来源 链接:美国节日 来源:牛客网 2. 题目说明 和中国的节日不同,美国的节假日通常是选择某个月的第几个星期几这种形式,因此每一年的放假日期都不相同.具体规则如下: 1月1日:元旦 1月的 ...

  4. HDU 6112 今夕何夕【2017百度之星】【日期模拟计算】【基姆拉尔森计算公式】【蔡勒公式】

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. 【蔡勒公式 】根据给定的年月日求出对应星期几

    蔡勒公式 蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几.时间复杂度:O(1).具体的在红书P229有. 若要计算的日期是在1582年10月4日或之前,公 ...

  6. 牛客多校第六场 G Is Today Friday? 蔡勒公式/排列

    题意: 有一堆日期,这些日期都是星期五,但是数字被映射成了字母A~J,现在让你求逆映射,如果存在多种答案,输出字典序最小的那个. 题解: 用蔡勒公式解决关于星期几的问题. 对于映射,可以用笔者刚刚学会 ...

  7. 快速计算某一天是星期几-蔡勒公式

    以下内容转自百度百科. w:星期: w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六 c:世纪(年份前两位数) y:年(后两位数) m:月(m大于等于3 ...

  8. c语言 万年历 蔡勒公式,C++实现简易万年历

    本文实例为大家分享了C++实现简易的万年历,供大家参考,具体内容如下 代码如下: /* *文件名称:万年历.cpp *作 者:chenghan *完成日期:2019/1/10 *版 本 号:1.0 * ...

  9. 计算星期几(蔡勒公式)

    Description acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你能写个程序帮帮他. Input 每行有三个整数 year,month,day,日期在1600年1月1日 ...

最新文章

  1. Javascript操作table,tr,td和表格CSS样式设置小常识
  2. 我在系统设计上犯过的14个错
  3. 信息化十七载 ERP重塑双良战略与核心价值
  4. JS系统库:预定义对象(内建对象)
  5. Android应用的基本组件介绍
  6. springboot集成钉钉_Java(SpringBoot)实现钉钉机器人消息推送
  7. 热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道
  8. 论文推荐 | 一文了解百度10篇ACL 2019概况和该技术的实际可落地应用
  9. 形态学滤波对图像进行边缘及角点检测
  10. 计算机1级题库软件,计算机一级软件哪个好_计算机一级刷题软件_计算机一级试题软件...
  11. 读书笔记2014第12本:《创新者的窘境》
  12. Windows 7下可用的“超级终端”——Hypertrm和SecureCRT
  13. 使用Motrix快速下载百度网盘文件
  14. micropython nodemcu 获取天气预报_NodeMCU获取并解析心知天气信息
  15. Unity 多端游戏画面同步
  16. 201704 创建财务凭证函数
  17. 【后台弹窗】应用跳转直通车--通知栏通知跳转后台应用
  18. web自动化(鼠标、键盘操作)
  19. 【深度学习】:详解目标检测YOLO V1(You Only Look Once)算法
  20. Dockerfile说明

热门文章

  1. Lily研究二(转)
  2. ComparerT 与 IComparerT
  3. yjv是电缆还是电线_yjv电缆是硬线还是软线
  4. C++中explicit的用法
  5. python2.7画图保存为eps格式出错,而python3.4无错--终极原因
  6. 企业微博营销,路在何方?
  7. unity 游戏物体自动循环移动脚本
  8. tensorflow学习之识别单张图片的实现(python手写数字)
  9. rabbitmq--prefetch count
  10. 在mysql中单引号的使用_MySQL中单引号和双引号的使用