6167
V2EX  ›  LeetCode

华为 OD 机试题:给定两个数 0<S, N<100000, S 为数列总和, N 为数列长度,求连续正整数列

  •  
  •   6167 · Dec 14, 2020 · 3979 views
    This topic created in 2156 days ago, the information mentioned may be changed or developed.
    有结果返回数列,无结果返回-1
    输入 525 6
    返回 85 86 87 88 89 90

    输入 3 5
    返回 -1

    题目倒是不难
    根据 (beg +end) *num/2 = sum
    倒推 beg= (2*sum/num-num+1)/2
    但是这种题怎么算才能满足 100%通过率?
    最高才 45%
    Supplement 1  ·  Dec 21, 2020
    import sys
    
    def func1(sum, num):
        if sum > 0 & num > 0 & int(sum) == sum & int(num) == num:
            beg = (sum * 2 / num - num + 1) / 2
            if beg % 1 == 0 & beg != 0:
                return [i for i in range(int(beg), int(beg) + num)]
            else:
                return -1
        else:
            return -1
    
    for line in sys.stdin:
        a = line.split()
        if len(a) != 2:
            print(-1)
        sum, num = a[0], a[1]
        if type(int(sum)) == type(int(num)) == type(1):
            print(func1(int(sum), int(num)))
        else:
            print(-1)
    
    8 replies  •  2020-12-21 22:13:40 +08:00
    LewisHorse
    LewisHorse
    Dec 14, 2020 via Android
    1
    判断无结果的条件是怎么写的?
    6167
    6167
    OP
    Dec 14, 2020
    2
    @LewisHorse
    if sum>0 & num<0 & sum == int(sum) & num == int(num):
    return ......
    else:
    return -1
    xsonglive491
    xsonglive491
    Dec 14, 2020
    3
    你直接判断 beg 是否是正整数就行了,(2*sum/num-num+1)为大于 0 的偶数
    6167
    6167
    OP
    Dec 14, 2020
    4
    @xsonglive491 这个有,只考虑这一项才通过 35%
    xsonglive491
    xsonglive491
    Dec 14, 2020
    5
    @6167 num <=0 or num*num > 2* sum or (2*sum/num-num+1) %2 !=0 :return -1
    Vanquish5419
    Vanquish5419
    Dec 16, 2020
    6
    很简单啊,beg = s/n - (n-1)/2
    是大于等于 0 的整数就行
    lidlesseye11
    lidlesseye11
    Dec 16, 2020
    7
    通过率是啥意思,测试 case 吗?那失败的 case 不给告诉的吗?
    另外建议楼主直接放出自己写的原版整段代码。。你这连用的什么语言都不知道。
    数学上是不难,可能是语言有什么特性哪里计算错了呢?
    6167
    6167
    OP
    Dec 21, 2020
    8
    @lidlesseye11

    @LewisHorse

    代码已附
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1232 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:44 · PVG 07:44 · LAX 15:44 · JFK 18:44
    ♥ Do have faith in what you're doing.