本文共 772 字,大约阅读时间需要 2 分钟。
为了解决这个问题,我们需要找到最大的整数 k,使得 0 ≤ k ≤ n,并且 k 对 x 取模等于 y。这个问题可以通过数学推导来解决,而不需要逐个检查每个可能的值。
我们需要找到一个最大的 k,使得 k 满足以下两个条件:
为了找到最大的 k,我们可以将其表示为 k = m * x + y,其中 m 是一个非负整数。为了找到最大的 m,我们可以解这个不等式:m * x + y ≤ n。解这个不等式得到 m = (n - y) // x。然后,k 可以表示为 k = ((n - y) // x) * x + y。
def main(): import sys input = sys.stdin.read().split() t = int(input[0]) idx = 1 for _ in range(t): x = int(input[idx]) y = int(input[idx+1]) n = int(input[idx+2]) idx += 3 k = ((n - y) // x) * x + y print(k) if __name__ == "__main__": main()
这种方法确保了我们能够在 O(1) 时间内计算出每个 k,从而高效地解决问题。
转载地址:http://yuykz.baihongyu.com/