首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  算法

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

  •  
  •   jedihy · 2017-10-07 13:52:17 +08:00 · 2717 次点击
    这是一个创建于 792 天前的主题,其中的信息可能已经有所发展或是发生改变。
    考虑闰年
    第 1 条附言  ·  2017-10-08 01:13:00 +08:00
    这题是有 O(1)时间的解法的,但是应该不要求
    10 回复  |  直到 2017-10-08 10:16:23 +08:00
        1
    gam2046   2017-10-07 14:14:33 +08:00   ♥ 3
    不用求,是固定的。闰年的前一年是 53 个之后三年都是 52 个,如此往复。


    2000 年是闰年,则 1999 年有 53 个,2000-2002 年都是 52 个;
    2003 年有 53 个,2004-2006 年有 52 个。
        2
    est   2017-10-07 14:19:17 +08:00   ♥ 2
    import v2ex

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

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

    重新写了一遍,观察一下,以 2000 年作为原点来看,2000 年周六与周日各有 53 个。
    之后先隔 4 年,第五年( 2005 )有 53 个周六,再隔 5 年,第六年( 2011 )有 53 个周六,如此往复;
    周日则先隔 5 年,第六年( 2006 )有 53 个周日,再隔 4 年,第五年( 2012 )有 53 个周日,如此往复;
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1401 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 16:55 · PVG 00:55 · LAX 08:55 · JFK 11:55
    ♥ Do have faith in what you're doing.