今夕何年 模拟 思维题
今天是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;
}
今夕何年 模拟 思维题相关推荐
- 过分的谜题 模拟+思维题
题目描述 2060年是云南中医学院的百年校庆,于是学生会的同学们搞了一个连续猜谜活动:共有10个谜题,现在告诉所有人第一个谜题,每个谜题的答案就是下一个谜题的线索-成功破解最后一个谜题后,答案就是指向 ...
- hdu 6112 今夕何年(模拟)
今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了"今夕何夕,见此良人"的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个 ...
- little w and Soda(思维题)
链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- ZOJ 3829 贪心 思维题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...
- ACM思维题训练 Section A
题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...
- 基础算法 —— 模拟思维
[概述] 模拟,是根据实际问题建立模型,模拟实际按程序走一遍,最终求出答案. 思维,则是与逻辑思维有关,其需要针对题意.数据范围等抽丝剥茧抽离出有用的信息,从而得出一个结果. 对于一般的模拟,直接根据 ...
- CodeForces-1016C Vasya And The Mushrooms(模拟+思维+前缀和的前缀和) 解题报告 Apare_xzc
CodeForces-1016C Vasya And The Mushrooms(模拟+思维+二重前缀和 ) 解题报告 xzc 2019/4/7 这周周赛的C题:wyt学姐的恶意 这道题周赛的时候 ...
- 2022保育员(高级)考试模拟100题及在线模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 2022保育员(高级)上岗证题目系保育员(高级)判断题的多种练习模式!2022保育员(高级)考试模拟100题及在线模拟考试依据保育员(高级)考试教材.保育 ...
- codeforces 有意思的思维题 1 ~ 15
codeforces 思维题 1.给定数组,求满足i < j and ai * aj = i + j的数对数量 2.第 i 步向前跳 i 步或后退 1 步 3.给两个点,求正方形的另两个点 4. ...
最新文章
- 多线程程序 怎样查看每个线程的cpu占用
- Storm入门之第一章
- 4.day11_包和权限修饰符-1
- uva 701——The Archeologists\' Dilemma
- kmp2-HDU1358 HUST1010 POJ2406 POJ2752
- VS2010 字体和背景设置
- pandas读取csv某一列_让pandas处理大数据速度变快的三个技巧
- Opencv之图像金字塔(笔记07)
- Qt学习笔记(3)——PushButton、RadioButton、CheckBox
- 单链表的回文判断(O(n)时间复杂度和O(1)的空间复杂度)
- java qq截图,qq截屏-qq截屏下载-javaweb下载站
- 一款完整开源的物联网基础平台
- java反序加密_对java程序加密防止反编译
- 从远程服务器下载文件
- python爬虫之爬取“唯美“主流图片
- Kotlin学习安卓篇(一)为什么要学习Kotlin?
- React+Antd 无插件 实现多个输入框验证码功能 + 倒计时(附完整代码)
- 白银价格转换器(美元/盎司-人民币/克)
- 传智播客成都java培训中心7月8号基础班开班啦
- 计算机等级证打字每分钟多少字才算合格?