HDU 6112 今夕何夕 “2017百度之星 1005”
来源:互联网 发布:电子商务实验室软件 编辑:程序博客网 时间:2024/06/06 03:42
这道题主要是解决两个日期直接的日期差,如果两日期的差%7为0则代表是同一个星期日。而解决日期差最麻烦的就是解决2月29的问题。
2月29日的问题有以下几个点要考虑:
一、之后的第一年是不是要经过2月29这一天,如果经过了或者当年不是闰年,到下一年的今天则+365(下一年不是闰年的情况)
二、在之后的每一年如果是闰年则加上366,否则365
三、在判断时(也就是判断是否是最后一年),要判断这年是不是闰年。如果是,那当前的日期是不是超过了2月29,超过了额外加一天判断,没超过直接加365天。
以上细节在代码相关处均有注解,可以结合代码查看,附代码
#include <iostream>#include <stdio.h>using namespace std;bool rn(int n){ //判断是不是闰年 if(n%4==0&&n%100!=0||n%400==0) return true; else return false;}int main(){ int t; cin>>t; int y,m,d; while(t--){ int temp=0; scanf("%d-%d-%d",&y,&m,&d); if(m==2&&d==29){ //特殊情况:输入的是2月29 for(int i=y+1;;i++){ if(rn(i)) { temp+=366; }else temp+=365; if(temp%7==0&&rn(i)){ cout<<i<<endl; break; } } }else{ for(int i=y;;i++){ if(rn(i)&&i==y&&m>2) { //判断第一年年需不需要经历的2月29这一天 temp=-1;; } if(rn(i)) { //经过闰年的时候多加一天 temp+=366; }else temp+=365; //cout<<i<<" "<<temp<<" "<<m<<endl; if(temp%7==0&&(rn(i+1)==0||m<=2)){ //这里是没有超过2月或者不是闰年,所以最后一年不需要+1 cout<<i+1<<endl; break; } if((temp+1)%7==0&&rn(i+1)&&m>2){ //这里是代表最后一年是闰年并且经历了2月29这一天,天数自然就加一了 cout<<i+1<<endl; break; } } } } return 0;}
阅读全文
1 0
- HDU 6112 今夕何夕 “2017百度之星 1005”
- HDU 6112 今夕何夕 【数学公式】 (2017"百度之星"程序设计大赛
- Hdu今夕何夕 (2017"百度之星"程序设计大赛
- 百度之星 今夕何夕
- HDU 6112 今夕何夕 (日历题 Zeller公式 2017百度之星初赛A第五题)
- HDU 6112 今夕何夕【2017"百度之星"】【日期模拟计算】【基姆拉尔森计算公式】【蔡勒公式】
- 百度之星 2017初赛第一场 1005 今夕何夕
- 【原创】【百度之星2017初赛A】1005 今夕何夕
- 2017百度之星资格赛(A)1005 今夕何夕(日期计算)
- 2017百度之星资初赛(A)--E:今夕何夕
- HDU6112 今夕何夕(基姆拉尔森公式,2017"百度之星"程序设计大赛
- 2017百度之星初赛:A-1005. 今夕何夕
- hdu6102 2017"百度之星"初赛(A)1005今夕何夕(模拟)
- 2017百度之星初赛(A) 1005 今夕何夕(阅读题)
- 2017年百度之星编程赛初赛A场-1005-今夕何夕
- 百度之星初赛A 今夕何夕
- 【HDU 6112 今夕何夕】
- hdu 6112 今夕何夕
- 方格取数问题
- mysql语句总结4
- 【LeetCode】27. Remove Element
- 通过url下载文件
- 饭卡(01背包)
- HDU 6112 今夕何夕 “2017百度之星 1005”
- 第四篇:JAVA网络编程之构建和解析自定义协议消息(含代码)
- 存储过程的初步认识
- javaseday19补充(Collections 工具Utility 同步加锁原理 集合数组互转 可变参数 静态导入)
- 轻松把玩HttpClient之模拟post请求示例
- 欢迎使用CSDN-markdown编辑器
- 怎样解决 ie11 f12 exception in window.onload:error:an error occurredjsplugi
- 日常生活小技巧 -- vim 中 ctags 的安装和使用
- ebookcoin 安装与入门