百度之星2017初赛A-1005-今夕何夕
2017-08-12 20:10
375 查看
今夕何夕
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 719 Accepted Submission(s): 228
小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。
为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是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
Source 2017"百度之星"程序设计大赛 - 初赛(A) 注意如果给出的年份是闰年且是二月二十九号,则要判断一下当前的年份是不是闰年,不是的话即使日期相同,但这天不存在!坑死我
#include<bits/stdc++.h> using namespace std; struct MyDate { int year; int month; int day; }; bool isr(int r){return r%4==0 && r%100!=0 || r%400==0;} int GetAbsDays(MyDate x) { int i; int month_day[] = {31,28,31,30,31,30,31,31,30,31,30,31}; int year = x.year-1; int days = year * 365 + year/4 - year/100 + year/400; if(isr(x.year)) month_day[1]++; for(i=0; i<x.month-1; i++) days += month_day[i]; days += x.day-1; return days; } int GetDiffDays(MyDate a, MyDate b) { return GetAbsDays(b) - GetAbsDays(a); } int main() { int T,n,m,i,j; cin>>T; while(T--){MyDate A,B; int Y,M,D,W; char a,b; scanf("%d-%d-%d",&Y,&M,&D); A.year=Y; A.month=M; A.day=D; B=A; for(;;){ B.year++; if(A.month==2&&A.day==29) { if(!isr(B.year)) continue; } int W2=GetDiffDays(A,B); if(W2%7==0){cout<<B.year<<endl;break;} } } return 0; }
相关文章推荐
- 2017百度之星初赛(A) 1005 今夕何夕(阅读题)
- 百度之星 2017初赛第一场 1005 今夕何夕
- 2017百度之星初赛:A-1005. 今夕何夕
- 【 2017"百度之星"程序设计大赛 - 初赛(A)1005 今夕何夕】
- 【2017"百度之星"程序设计大赛 - 初赛(A)】今夕何夕
- 2017百度之星资格赛(A)1005 今夕何夕(日期计算)
- 2017百度之星初赛A 今夕何夕
- 2017百度之星初赛(A)1001,1005,1006解题报告
- HDU 6112 今夕何夕 “2017百度之星 1005”
- 2017百度之星初赛:B-1005. 度度熊的交易计划(最小费用流)
- hdu6102 2017"百度之星"初赛(A)1005今夕何夕(模拟)
- HDU 6112 今夕何夕 (日历题 Zeller公式 2017百度之星初赛A第五题)
- 2017"百度之星"程序设计大赛 - 初赛(A)-1001.小C的倍数问题(HDU6108) 1005.今夕何夕-蔡勒公式 (HDU6112)
- (最小费用流)hdu 6118(2017百度之星初赛B 1005) 度度熊的交易计划
- 2017年百度之星编程赛初赛A场-1005-今夕何夕
- 百度之星2017初赛A-1006-度度熊的01世界
- 2017百度之星初赛(B)1001Chess------hdu6114
- HDU 6108 2017 百度之星 初赛A 1001 小C的倍数问题
- 【2017"百度之星"程序设计大赛 - 初赛(B)】小小粉丝度度熊
- 2017"百度之星"程序设计大赛 - 初赛(A)1005【打表】——HDU 6112