📜  日历

📅  最后修改于: 2021-10-23 07:40:34             🧑  作者: Mango

在日历中,如果给定日期,问题主要基于查找星期几。例如,我们可能会被要求找出 1981 年 2 月 2 日这一天。

  • 从日期中查找日期是基于计算奇数天数。奇数天是指比完整周数多的天数。例如,
    非闰年的天数 = 365
    365 模 7 = 1
    所以,非闰年奇数天数 = 1
  • 闰年的天数 = 366
    => 闰年奇数天数 = 366 mod 7 = 2
  • 100 年的奇数天数(76 个非闰年 + 24 个闰年)= [(76 x 1) + (24 x 2)] mod 7 = (76 + 48) mod 7 = 124 mod 7 = 5 天
  • 200 年奇数天数 = (2 x 100 年奇数天数) mod 7 = 10 mod 7 = 3
  • 300 年奇数天数 = (3 x 5) mod 7 = 1
  • 400 年奇数天数 = (4 x 5 + 1) mod 7 = 21 mod 7 = 0
    请注意,这里我们额外增加了 1 天,因为第 400 年本身就是闰年。
  • 要检查非百年年份是否为闰年,我们将其除以 4。如果余数为 0,则该年份为闰年。例如,2016 mod 4 = 0。因此,我们可以安全地推断出 2016 年是闰年。
  • 要检查百年年份是否为闰年,我们将其除以 400。如果余数为 0,则该年份为闰年。例如,1700 mod 400 = 100。所以,这不是闰年。但是 1600 mod 400 = 0。因此,我们可以安全地推断 1600 是闰年。
  • 奇数天数 = 0,天数 = 星期日
    奇数天数 = 1,天数 = 星期一
    奇数天数 = 2,天数 = 星期二
    奇数天数 = 3,天数 = 星期三
    奇数天数 = 4,天数 = 星期四
    奇数天数 = 5,天数 = 星期五
    奇数天数 = 6,天数 = 星期六

示例问题