jedihy
V2EX  ›  算法

求某一特定年有多少个周六周日

  •  
  •   jedihy · Oct 7, 2017 · 5858 views
    This topic created in 3314 days ago, the information mentioned may be changed or developed.
    考虑闰年
    Supplement 1  ·  Oct 8, 2017
    这题是有 O(1)时间的解法的,但是应该不要求
    10 replies  •  2017-10-08 10:16:23 +08:00
    ntdll
    ntdll
    Oct 7, 2017❤️3
    1
    不用求,是固定的。闰年的前一年是 53 个之后三年都是 52 个,如此往复。

    如
    2000 年是闰年,则 1999 年有 53 个,2000-2002 年都是 52 个;
    2003 年有 53 个,2004-2006 年有 52 个。
    est
    est
    Oct 7, 2017❤️2
    2
    import v2ex

    v2ex.search('特定年有多少个周末')
    pla
    pla
    Oct 7, 2017 via iPhone
    3
    Python datetime 模块可以直接算指定日期是周几,其他语言应该也有类似的。
    用现成的就不涉及具体算法,跑题了
    Chrisplus
    Chrisplus
    Oct 7, 2017
    4
    幸运 52,闰年多一次幸运
    CEBBCAT
    CEBBCAT
    Oct 7, 2017 via Android
    5
    知到某一年一月一号是周几和这一年有多少天就够了,

    可以把,这一年所有日子排成一排,周几是循环出现的
    jedihy
    jedihy
    OP
    Oct 7, 2017 via iPhone
    6
    @gam2046 52 周不代表周六日
    ntdll
    ntdll
    Oct 7, 2017
    7
    @jedihy 请自行验证,举出反例。我是用程序跑了一遍,验证结果后,才说的。
    jedihy
    jedihy
    OP
    Oct 8, 2017
    8
    @gam2046 2000 年有 53 个周六,53 个周日
    jedihy
    jedihy
    OP
    Oct 8, 2017
    9
    @Chrisplus 不对,今年你都错了,今年有 53 个周日
    ntdll
    ntdll
    Oct 8, 2017
    10
    @jedihy 感谢,确实是我错了。检查了下之前写的程序,时间递增加错了。

    重新写了一遍,观察一下,以 2000 年作为原点来看,2000 年周六与周日各有 53 个。
    之后先隔 4 年,第五年( 2005 )有 53 个周六,再隔 5 年,第六年( 2011 )有 53 个周六,如此往复;
    周日则先隔 5 年,第六年( 2006 )有 53 个周日,再隔 4 年,第五年( 2012 )有 53 个周日,如此往复;
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2944 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 12:58 · PVG 20:58 · LAX 04:58 · JFK 07:58
    ♥ Do have faith in what you're doing.