zoukankan      html  css  js  c++  java
  • 算法:数对

    题目:

    牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。

    但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。

    牛牛希望你能帮他计算一共有多少个可能的数对。

    算法分析:

    首先判断y在[k+1, n]的范围内,对0-n的数字进行分组:

    [0,1,2....y-1], [y,y+2,....,2y-1]......[n*y,...n]

    一共有n//y组数据,前面n//y-1组数据每组有n个数,其中前面k个数除以y的余数小于k,所以每组有(y-k)个数满足要求;

    当n%y>k时,最后一组个数不明也存在满足条件的x

    n, k = list(map(int, input().split()))
    count = 0
    for y in range(k + 1, n + 1):
        if k:
            c = n // y * (y - k)
            if n % y >= k:
                c += n % y - k + 1
        else:
            c = n
        count += c
    
    print(count)
    
    
  • 相关阅读:
    面向对象优势
    二维码
    数据库分页
    DBUtil连接数据库
    sqliteDOC创建数据库
    ajax的回调函数
    多线程
    JSTL优点
    WebSocket 搭建简单聊天网站
    全等和不全等
  • 原文地址:https://www.cnblogs.com/a-little-v/p/10662002.html
Copyright © 2011-2022 走看看