• 百度之星2017初赛A-1005-今夕何夕


    今夕何夕

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 719    Accepted Submission(s): 228


    Problem Description
    今天是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
     
    Source
    注意如果给出的年份是闰年且是二月二十九号,则要判断一下当前的年份是不是闰年,不是的话即使日期相同,但这天不存在!坑死我
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 struct MyDate
     4 {
     5 int year;
     6 int month;
     7 int day;
     8 };
     9 bool isr(int r){return r%4==0 && r%100!=0 || r%400==0;}
    10 int GetAbsDays(MyDate x)
    11 {
    12 int i;
    13 int month_day[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    14 int year = x.year-1;  
    15 int days = year * 365 + year/4 - year/100 + year/400;
    16 if(isr(x.year)) month_day[1]++;
    17 for(i=0; i<x.month-1; i++)
    18 days += month_day[i];
    19 days += x.day-1;
    20 return days;
    21 }
    22 int GetDiffDays(MyDate a, MyDate b)
    23 {
    24 return GetAbsDays(b) - GetAbsDays(a);
    25 }
    26 int main()
    27 {
    28     int T,n,m,i,j;
    29     cin>>T;
    30     while(T--){MyDate A,B;
    31         int Y,M,D,W;
    32         char a,b;
    33         scanf("%d-%d-%d",&Y,&M,&D);
    34         A.year=Y;
    35         A.month=M;
    36         A.day=D;
    37         B=A;
    38         for(;;){
    39            B.year++;
    40            if(A.month==2&&A.day==29)
    41            {
    42                if(!isr(B.year)) continue;
    43            }
    44            int W2=GetDiffDays(A,B);
    45            if(W2%7==0){cout<<B.year<<endl;break;}
    46         }
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    浅谈软件开发项目的质量控制
    分布式系统稳定性模式
    正确使用 Volatile 变量
    我和 OI 的一些故事
    NOIP2020 退役记
    博弈论基础入门
    [HAOI2008]硬币购物(容斥/背包DP)
    [CF] 1307F Cow and Vacation(思维/贪心)
    [noi.ac 模拟赛8] c(容斥/DP)
    [noi.ac 模拟赛9] A.出征准备(同余最短路)
  • 原文地址:https://www.cnblogs.com/zzqc/p/7351357.html
Copyright © 2020-2023  润新知