美文网首页
Codeforces 1352C - K-th Not Divi

Codeforces 1352C - K-th Not Divi

作者: 费城的二鹏 | 来源:发表于2020-05-14 14:07 被阅读0次

    蔚蓝的天空,依稀记得那加班的日子。

    翻译

    给你两个数字 n 和 k,输出第 k 个不能被 n 整除的数字。

    输入格式

    第一行输入 t,表示用例组数。

    接下来每行是一个用例,包含 n 和 k,用空格分隔。

    输出格式

    每个测试用例输出一行数字,也即是第 k 个可以被 n 整除的数字。

    分析

    这道题官方给的解法是 二分法。

    我做完之后感觉很有道理,直接二分法查找每个数字是不是满足条件,如果大了就往左搜,小了就往右搜,时间复杂度大概是log(n),可以满足这个数据量的要求。

    我选择了构建公式的方式,int(k / (n - 1)) * n + (-1 if k % (n - 1) == 0 else k % (n - 1)),int(k / (n - 1)) 就是在计算需要多少个 n 才能构建出这个大小的数字,第二部分 (-1 if k % (n - 1) == 0 else k % (n - 1)) 就是在补全余数的大小,如果余数能被整除,说明前面构造的是恰巧被整除需要减一,其余情况添加上余数的值即可。

    代码(PyPy3)

    # https://codeforces.com/problemset/problem/1352/C
    
    import sys
    
    # sys.stdin = open(r"./file/input.txt", 'r')
    # sys.stdout = open(r"./file/output.txt", 'w')
    
    t = int(input())
    
    for _ in range(t):
        arr = input().split(" ")
        n = int(arr[0])
        k = int(arr[1])
    
        print(int(k / (n - 1)) * n  + (-1 if k % (n - 1) == 0 else k % (n - 1)))
    

    更多代码尽在 https://github.com/Tconan99/Codeforces

    by 费城的二鹏 2020.05.11 长春

    相关文章

      网友评论

          本文标题:Codeforces 1352C - K-th Not Divi

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