美文网首页
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