今天是2017年8月6日,农历闰六月十五。

小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。

为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。

小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年。
Input
第一行为T,表示输入数据组数。

每组数据包含一个日期,格式为YYYY-MM-DD。

1 ≤ T ≤ 10000

YYYY ≥ 2017

日期一定是个合法的日期

Output
对每组数据输出答案年份,题目保证答案不会超过四位数。
Sample Input
3
2017-08-06
2017-08-07
2018-01-01
Sample Output
2023
2023
2024

先总结一下日期变化的规律,在一般情况下,每过一年都会向后推移一天,即如果今年的今天是周一,那么下一年的今天就是周二。闰年的时候,由于在二月多了一天,所以闰年日期变化会推移两天。具体一些,如果输入的日期是二月之后,那么今年是不是闰年已经没有影响了,而如果是二月之前就仍会产生影响,所以代码里要区别月份。另外,比较极端的情况,输入的日期本身就是闰年出现的一天,就2月29日,这种情况下只能一次计算四年,当天数的增加值能整除7的时候说明绕了一圈正好回到那一天。比较考验思维的模拟题,要仔细分析。

AC代码

#include<iostream>
#include<stdio.h>
using namespace std;
int check(int n)
{if(n%4==0&&n%100!=0||n%400==0) return 1;else return 0;
}
int main()
{int n;cin>>n;while(n--){int cnt=0;int y,m,d;scanf("%d-%d-%d",&y,&m,&d);if(m==2&&d==29)//输入的年份是闰年的时候,需要四年四年地进行处理 {while(cnt==0||cnt%7!=0){y+=4;cnt+=365*4+1;if(y%400!=0&&y%100==0) //因为这种情况下年份不是闰年,所以需要往后再跳四年,不然会出现多一天的情况 {y+=4;cnt+=365*4; }}cout<<y<<endl;}else if(m<=2)//当月份小于等于2的时候,闰年会对其结果产生影响,所以要先判断日期变化再调整年份 {while(cnt==0||cnt%7!=0){if(check(y))cnt+=366;elsecnt+=365;y++;}cout<<y<<endl;}else//月份大于2时,当年是闰年不会对本年产生影响,所以先到下一年再判断日期变化 {while(cnt==0||cnt%7!=0){y++;if(check(y))cnt+=366;elsecnt+=365;        }cout<<y<<endl;}}return 0;
}

今夕何年 模拟 思维题相关推荐

  1. 过分的谜题 模拟+思维题

    题目描述 2060年是云南中医学院的百年校庆,于是学生会的同学们搞了一个连续猜谜活动:共有10个谜题,现在告诉所有人第一个谜题,每个谜题的答案就是下一个谜题的线索-成功破解最后一个谜题后,答案就是指向 ...

  2. hdu 6112 今夕何年(模拟)

    今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了"今夕何夕,见此良人"的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个 ...

  3. little w and Soda(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  4. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  5. ACM思维题训练 Section A

    题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...

  6. 基础算法 —— 模拟思维

    [概述] 模拟,是根据实际问题建立模型,模拟实际按程序走一遍,最终求出答案. 思维,则是与逻辑思维有关,其需要针对题意.数据范围等抽丝剥茧抽离出有用的信息,从而得出一个结果. 对于一般的模拟,直接根据 ...

  7. CodeForces-1016C Vasya And The Mushrooms(模拟+思维+前缀和的前缀和) 解题报告 Apare_xzc

    CodeForces-1016C Vasya And The Mushrooms(模拟+思维+二重前缀和 ) 解题报告 xzc 2019/4/7 这周周赛的C题:wyt学姐的恶意   这道题周赛的时候 ...

  8. 2022保育员(高级)考试模拟100题及在线模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2022保育员(高级)上岗证题目系保育员(高级)判断题的多种练习模式!2022保育员(高级)考试模拟100题及在线模拟考试依据保育员(高级)考试教材.保育 ...

  9. codeforces 有意思的思维题 1 ~ 15

    codeforces 思维题 1.给定数组,求满足i < j and ai * aj = i + j的数对数量 2.第 i 步向前跳 i 步或后退 1 步 3.给两个点,求正方形的另两个点 4. ...

最新文章

  1. 多线程程序 怎样查看每个线程的cpu占用
  2. Storm入门之第一章
  3. 4.day11_包和权限修饰符-1
  4. uva 701——The Archeologists\' Dilemma
  5. kmp2-HDU1358 HUST1010 POJ2406 POJ2752
  6. VS2010 字体和背景设置
  7. pandas读取csv某一列_让pandas处理大数据速度变快的三个技巧
  8. Opencv之图像金字塔(笔记07)
  9. Qt学习笔记(3)——PushButton、RadioButton、CheckBox
  10. 单链表的回文判断(O(n)时间复杂度和O(1)的空间复杂度)
  11. java qq截图,qq截屏-qq截屏下载-javaweb下载站
  12. 一款完整开源的物联网基础平台
  13. java反序加密_对java程序加密防止反编译
  14. 从远程服务器下载文件
  15. python爬虫之爬取“唯美“主流图片
  16. Kotlin学习安卓篇(一)为什么要学习Kotlin?
  17. React+Antd 无插件 实现多个输入框验证码功能 + 倒计时(附完整代码)
  18. 白银价格转换器(美元/盎司-人民币/克)
  19. 传智播客成都java培训中心7月8号基础班开班啦
  20. 计算机等级证打字每分钟多少字才算合格?

热门文章

  1. 程序员必备的编程集成开发工具
  2. 华为交换机设置端口聚合的方法
  3. Android Jetpack: ViewModel | 中文教学视频
  4. TPLINK路由 无线MAC地址过滤设置
  5. 《代码整洁之道》简单总结
  6. Disql、Dexp、Dimp使用
  7. 深圳英语培训班有推荐的吗?学习效果好吗?
  8. 苹果以旧换新价格表_苹果以旧换新价格表最新 iPhone以旧换新折抵价下降
  9. CIA反取证工具曝光 安全专家质疑维基解密
  10. 一篇差点让老婆离开我的文章