码迷,mamicode.com
首页 > 其他好文 > 详细

一道在线笔试题

时间:2018-03-28 00:05:57      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:post   range   blog   答案   count   info   gpo   分类   down   

技术分享图片

解决思路:分类讨论
当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)

一道在线笔试题

标签:post   range   blog   答案   count   info   gpo   分类   down   

原文地址:https://www.cnblogs.com/weiyinfu/p/8660879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!