【问题描述】

今天是2017年8月6日,农历闰六月十五。
       小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。
       为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。
       小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年。

【输入形式】

第一行为T,表示输入数据组数。
       每组数据包含一个日期,格式为YYYY-MM-DD。
           1 ≤ T ≤ 10000, YYYY ≥ 0
       日期一定是个合法的日期

【输出形式】

对每组数据输出答案年份,题目保证答案不会超过四位数。

【样例输入】

3
2017-08-06
2017-08-07
2018-01-01

【样例输出】

2023
2023
2024

思路分析:

1.计算星期可以用蔡勒公式

2.注意陷阱:如果日期是2月29号,即闰年时,要每隔四年才是合法的日期。

3.采用循环,变化年数,月份日期不变,运用蔡勒公式进行比较即可。

下面是代码:

#include<iostream>
using namespace std;
int qiuweek(int year,int month,int day){int c,y,m,d;if(month==1||month==2){c=(year-1)/100;y=(year-1)%100;m=month;d=day;}else{c=year/100;y=year%100;m=month;d=day;}int week=c/4-2*c+y/4+y+26*(m+1)/10+d-1;week=week>0?(week%7):(week%7+7);week=week==0?7:week;return week;
}
int main(){int T;//测试数据总数cin>>T;for(int i=1;i<=T;i++){int year0,month0,day0;//初始日期cin>>year0>>month0>>day0;if(month0==2&&day0==29){for(int year1=year0+4;1;year1+=4)if(qiuweek(year0,month0,day0)==qiuweek(year1,month0,day0)){cout<<year1<<endl;break;            }} else{for(int year1=year0+1;1;year1++)if(qiuweek(year0,month0,day0)==qiuweek(year1,month0,day0)){cout<<year1<<endl;break;}}} return 0;
}

今夕何夕(蔡勒公式)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 获取星期--蔡勒公式

    蔡勒公式 public String dayOfTheWeek(int day, int month, int year) {int[] benchmark = {0, 3, 2, 5, 0, 3, ...

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

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

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

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

  9. 基姆拉尔森公式和蔡勒公式(计算星期几)

    给定一个xxxx-xx-xx日期,计算为星期几. 直接使用基姆拉尔森计算公式,外文名是Kim larsen calculation formula. 从 公元0年1月1日星期日 开始,已考虑各种因素. ...

最新文章

  1. Javascript Symbol 隐匿的未来之星
  2. C++ 的语言杂谈(一)--C++不是新手友好的
  3. 28. css样式中px转rem
  4. 大数据新手之路二:安装Flume
  5. python 列表推导_Python 列表推导式使用的注意事项
  6. java 栈队列区别是什么意思_java栈和队列的区别
  7. 关于TLS升级的问题
  8. PHP curl 请求不到数据 errno 52 ,empty replay form service
  9. mysql if / case / limit / join / 数据类型 、oracle decode 及其它sql对比
  10. 阿里巴巴直推关键技术手册收藏
  11. .NetCore分布式部署中的DataProtection密钥安全性
  12. GitHub上1.5万Star的开源抢票神器!
  13. 华为HCNA实验操作之常用操作命令32-40
  14. 信息安全技术实验PGP邮件加密系统工具下载过程记录
  15. 使用 Hyper-V 安装 Linux
  16. 白帽子(5)- 命令注入与代码注入区别
  17. stm32+定时器PWM波+电机驱动+直流电机
  18. 新寓言——没有窝的猪
  19. 如何15天之内发表一篇ei会议英文论文?
  20. 海盗分金币 两种条件下的分析

热门文章

  1. Day1: 正点原子mini-linux 开发板 开机测试
  2. 一名测试实习生的心路历程
  3. 香橙派Orange Pi i96 初次使用遇到的坑和解决方法+附加c# iot .net 代码实例
  4. 某园区弱电智能化工程
  5. 指令系统相兼容的计算机称为系列机,计算机组成与体系结构.ppt
  6. html5 倒计时插件,基于HTML5 time元素的倒计时jquery插件
  7. CMS 订单管理系统
  8. pg数据库执行sql文件_在linux中Postgresql数据库如何执行脚本文件
  9. 面试官:手写一个call、apply、bind?
  10. 二叉树的非递归遍历(java)