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

  • 1月1日:元旦
  • 1月的第三个星期一:马丁·路德·金纪念日
  • 2月的第三个星期一:总统节
  • 5月的最后一个星期一:阵亡将士纪念日
  • 7月4日:美国国庆
  • 9月的第一个星期一:劳动节
  • 11月的第四个星期四:感恩节
  • 12月25日:圣诞节
    现在给出一个年份,请你帮忙生成当年节日的日期。
    输入描述:
    输入包含多组数据,每组数据包含一个正整数year(2000≤year≤9999)。
    输出描述:
    对应每一组数据,以“YYYY-MM-DD”格式输出当年所有的节日日期,每个日期占一行。
    每组数据之后输出一个空行作为分隔。
    示例1
    输入
    2014
    2013
    输出
    2014-01-01
    2014-01-20
    2014-02-17
    2014-05-26
    2014-07-04
    2014-09-01
    2014-11-27
    2014-12-25

2013-01-01
2013-01-21
2013-02-18
2013-05-27
2013-07-04
2013-09-02
2013-11-28
2013-12-25

重点:使用蔡勒公式
蔡勒公式:
字母意义:
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六   
c:世纪(前两位数)    y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算
d:日
公式:W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1 (或:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

#include <iostream>
using namespace std;
int day_of_week(int year, int month, int day){//月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年           的13、14月来计算if (month == 1 || month == 2) {month += 12;year -= 1;}int c = year / 100;year = year % 100;int week = year + (year / 4) + (c / 4) - 2 * c + 26 * (month + 1) / 10 + day - 1;  //公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1week = (week % 7 + 7) % 7;if (week == 0) {week = 7;}return week;
}int day_of_demand(int year, int month, int count, int d_of_week){//count 第几个星期     d_of_week周几int week = day_of_week(year, month, 1);// 第几个星期 * 7天 + 这个星期到星期 d_of_week 还剩几天int day = 1 + (count - 1) * 7 + ((7 - week) + d_of_week) % 7;return day;
}//输出格式为yyyy-mm-dd
// 元旦
void new_year_day(int year) {printf("%d-01-01\n", year);
}// 马丁·路德·金纪念日
void martin_luther_king_day(int year) {printf("%d-01-%02d\n", year, day_of_demand(year, 1, 3, 1));
}// 总统日
void president_day(int year) {printf("%d-02-%02d\n", year, day_of_demand(year, 2, 3, 1));
}// 阵亡将士纪念日
void memorial_day(int year) {// 从 6 月往前数int week = day_of_week(year, 6, 1);int d =(week == 1) ? 6 : (week - 2);int day = 31 - d;printf("%d-05-%02d\n", year, day);
}// 国庆
void independence_day(int year) {printf("%d-07-04\n", year);
}// 劳动节
void labor_day(int year) {printf("%d-09-%02d\n", year, day_of_demand(year, 9, 1, 1));
}// 感恩节
void thanks_giving_day(int year) {printf("%d-11-%02d\n", year, day_of_demand(year, 11, 4, 4));
}// 圣诞节
void christmas(int year) {printf("%d-12-25\n", year);
}// 美国节日
void festival(int year) {new_year_day(year);martin_luther_king_day(year);president_day(year);memorial_day(year);independence_day(year);labor_day(year);thanks_giving_day(year);christmas(year);
}int main() {int year;while (cin >> year) {festival(year);cout << endl;}
}

【牛客网】美国节日(代码)相关推荐

  1. verilog牛客网刷题代码汇总

    verilog牛客网刷题代码汇总 作者:安静到无声 个人主页 作者简介:人工智能和硬件设计博士生.CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇. Thanks♪(・ω・)ノ 如果 ...

  2. 牛客网未通过代码---

    请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniString,请返回一个string,为翻转后的字符串.保证字符串的 ...

  3. 剑指offer,靠谱分析及牛客网可AC代码,c++(11~20)

    11.旋转数组的最小数字 https://blog.csdn.net/malele4th/article/details/79316253 一定程度二分法,加点顺序查找,可用但不是最好: class ...

  4. 华为上机考试题系列(一):牛客网的奇葩操作

    面试过华为和字节跳动的都知道这两家公司很喜欢与牛客网合作,但牛客网的东西真的垃圾,华为使用牛客网的上机代码测试系统,字节跳动使用牛客网的视频会议(这里推荐腾讯的会议app,比牛客网稳定太多了) 下面开 ...

  5. 仿牛客网社区项目 全栈总结

    学习仿牛客网社区项目 代码&资源 各章节总结 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 争取让每个知识点都有链接可点 项目总结 网站架构图 常见面试题 MySQL Red ...

  6. 【牛客网】美国节日与因式分解

    目录 一.编程题 1.美国节日 2.因式分解 一.编程题 1.美国节日 链接:美国节日__牛客网 (nowcoder.com) 和中国的节日不同,美国的节假日通常是选择某个月的第几个星期几这种形式,因 ...

  7. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20

    DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--01~20 目录 剑指offer--66道在线编程--01~20 1.二维数组中的查找某个targe ...

  8. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——41~66

    DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--41~66 目录 剑指offer之66道在线编程--41~66 42.和为s的两个数字 43.左旋转 ...

  9. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——21~40

    DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--21~41 目录 剑指offer之66道在线编程--21~41 21.栈的压入.弹出序列 22.从上 ...

  10. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...

最新文章

  1. 微软Azure Stack混合云进入中国
  2. sql server 对特殊字符的提取表达式
  3. 关于SSIS中解密数据库字符串的方法
  4. CTF-Misc-CRC32碰撞脚本 (二)
  5. 英文随笔(part1)
  6. 【Transformer】DETR: End-to-End Object Detection with Transformers
  7. 测绘技术设计规定最新版_公示 | 29家单位申报甲级测绘资质审查意见
  8. linux下tomcat脚本,Linux下重启多个 tomcat 服务的脚本(推荐)
  9. linux下搭建nagios监控
  10. 把结构用二进制方式写入文件,并读出来[转]
  11. [Objective-C语言教程]数组(14)
  12. 安卓开发之刮刮乐实例教程
  13. 【配送路径规划】基于matlab遗传算法求解带时间窗的多配送中心半开放式车辆路径规划问题【含Matlab源码 YC002期】
  14. maven命令指定配置文件
  15. vue-tippy优秀悬浮框插件的两种使用方式(解决elementui的tooltip不及时消失及定位出错问题,使用el-progress进度条模仿柱状图,tippy模仿echarts悬浮框)
  16. 【视频分享】Spark大型项目实战 138讲
  17. 2019杭电多校三 C. Yukikaze and Demons (点分治)
  18. iOS开发之SEL用法
  19. 洪磊父亲详述被拘细节:银行卡共100万
  20. 2011浙江省公务员考试申论大作文的写作

热门文章

  1. VIC水文模型入门攻略(上) 将VIC跑起来
  2. Docker Exited (1) 3 minutes ago
  3. vscode 报错:vscode The Vue Language Server server crashed 5 times in the last 3 minutes.
  4. 大行bya412和java513_实情爆料大行bya412真的好吗?怎么样呢?老司机指教诉说
  5. CSP-S 2022 复赛游记
  6. 【奥卡姆剃刀】一条短信骗走所有财产的分析
  7. IRIS 2021 技术文档 First Look 15 -- 使用 XEP 实例化存储 Java 对象
  8. ArcGIS API+Canvas +Vue框架 制作前端地图打印功能
  9. 学习日记12/29,好日子呀好日子
  10. amazon ses_Amazon Simple Email Service(SES)入门