一道在线笔试题

Posted weiyinfu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道在线笔试题相关的知识,希望对你有一定的参考价值。

技术分享图片

解决思路:分类讨论
当k==0的时候,有n*n对答案
当k!=0的时候,设x%y=z,z>=k.分类讨论:当x<y的时候,当x>y的时候

def simple(n, k):
    cnt = 0
    for i in range(1, n + 1):
        for j in range(1, n + 1):
            if i % j >= k:
                cnt += 1
    return cnt


def better(n, k):
    if k == 0:
        return n * n
    s = 0
    for i in range(max(1, k), n + 1):
        s += n - i
    for i in range(k + 1, n):
        group_count = n // i
        s += max(0, (group_count - 1)) * (i - k)
        s += max(0, n % i - k + 1)
    return s


def test():
    import random
    n = random.randint(3, 100)
    k = random.randint(0, n)
    return simple(n, k) == better(n, k)


for _ in range(1000):
    ans = test()
    if not ans:
        exit(-1)

以上是关于一道在线笔试题的主要内容,如果未能解决你的问题,请参考以下文章

nice公司的一道笔试题讲解

JavaScript笔试题(js高级代码片段)

笔试题81. 腾讯2017暑期实习生笔试题

一道笔试题引发的对Object.creat()的思考

js原型链的一些发现----来自一道笔试题

golang 中 string 转换 []byte 的一道笔试题