美文网首页
2022-05-17 一道简单的累加和

2022-05-17 一道简单的累加和

作者: 木马音响积木 | 来源:发表于2022-05-17 11:26 被阅读0次

    题目:
    从1开始累加,
    1+2+3+..... +? >1234567
    ? 是,使上面的式子成立的最小正整数。
    求它的值。
    先说答案 1571
    ,累加和为 1234806.0

    1,第一种解法,不定次循环

    i=0
    he=0
    while he<=1234567:
        i+=1
        he+=i
    print(i,he)
    1571   1234806.0
    

    2,第二种解法

    import itertools
    la=(i for i in range(1234567))
    print(type(la))
    for i,j in enumerate(itertools.accumulate(la)):
        if j>1234567:
            print(j,i)
            break
    
    print(1571*1572/2)
    #<class 'generator'>
    #1234806 1571
    #1234806.0
    
    

    3,第三种解法

    e=10000
    a=1
    def cc(a):
        return a*(a+1)//2
    x=0
    while a<e:
        m=a+e >>1 #左手写法的模板
        x+=1
        print(x,m)
        if cc(m)<=1234567:
            a=m+1
        else:
            e=m 
    print(e,a)
    
    print(1571/13)
    

    其实,用二分法,来计算,这是个13次计算问题,而我们计算 1571 次。差了120倍。
    1,算法的重要性,懂时间复杂度,懂二分算法,左手写法
    2,数学公式的重要性,懂,等差数列求和 ,懂估算
    3,初始化的重要性

    能够考虑的维度的多少,决定了能够实现业务代码的复杂度。
    新闻摘要法,才是自顶向下,构建代码。

    相关文章

      网友评论

          本文标题:2022-05-17 一道简单的累加和

          本文链接:https://www.haomeiwen.com/subject/axtnurtx.html