题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6112题意:中文题目

分析:关键点在与如何计算一个日期是星期几,这个可以通过蔡勒公式来计算。基姆拉尔森计算公式可以通过给定的year month day 计算出给定日期是星期几,注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算,最后这道题要考虑闰年的情况,2月29号只可能在闰年中出现。基姆拉尔森计算公式:  W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 在公式中d表示日期中的日数,m表示月份数,y表示年数。

#include <bits/stdc++.h>
using namespace std;
int cal(int y, int m, int d)
{
if(m==1||m==2){
m+=12;
y--;
}
return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
}
bool leap(int y){
if(y%400==0||(y%4==0&&y%100!=0)) return true;
else return false;
}
int main()
{
int T; scanf("%d", &T);
while(T--){
int y,m,d;
scanf("%d-%d-%d",&y,&m,&d);
int w=cal(y,m,d);
int flag=0;
if(m==2&&d==29){
flag=1;
}
if(flag){
for(int i=y+1;; i++){
if(cal(i,m,d)==w&&leap(i)){
printf("%d\n", i);
break;
}
}
}
else{
for(int i=y+1;;i++){
if(cal(i,m,d)==w){
printf("%d\n",i);
break;
}
}
}
}
return 0;
}

最新文章

  1. [SE0]简单的搜索引擎原理
  2. 点击其它地方DIV隐藏
  3. PHP安装所最到的问题-解决方案
  4. Jeasyframe 开源框架 稳定版 V1.5 发布
  5. bzoj 1854: [Scoi2010]游戏
  6. Spring security与shiro
  7. Linux下的Job Control(转:http://blog.chinaunix.net/uid-26495963-id-3062757.html)
  8. copy(source,destination)拷贝文件
  9. MultiROM for the XIAOMI MI2S/2C/2! (Kexec HardBoot Enabled with Kexec HardBoot Patch!)
  10. Redis实现高并发分布式序列号
  11. .net基础第一天
  12. kubernetes调度pod运行于master节点上
  13. [openjudge-动态规划]Maximum sum
  14. Nuget 配置文件的位置
  15. hive归档分区
  16. 【记录】解决VS2015调试Xamarin程序一闪而过(使用微软ANDROID模拟器)
  17. ORACLE中CONNECT BY...START WITH...的使用
  18. HDU.1850 being a good boy in spring festival (博弈论 尼姆博弈)
  19. Java常用的异常类型
  20. 如何让EasyUI弹出层跳出框架

热门文章

  1. Android 4.0源码结构
  2. Shell编程学习总结
  3. 【BZOJ1941】Hide and Seek(KD-Tree)
  4. BZOJ1823:[JSOI2010]满汉全席——题解
  5. AOJ.592 神奇的叶子
  6. 关于EK Dicnic
  7. 使用openssl进行文件加密
  8. spring全局异常处理 自定义返回数据结构
  9. 爬虫实例——通过JS控制滚动条
  10. Leetcode 200. 岛屿的个数(扩展)