jedihy
V2EX  ›  算法

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

  •  
  •   jedihy · Oct 7, 2017 · 5440 views
    This topic created in 3168 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
        1
    ntdll  
       Oct 7, 2017   ❤️ 3
    不用求,是固定的。闰年的前一年是 53 个之后三年都是 52 个,如此往复。


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

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

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

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