zoukankan      html  css  js  c++  java
  • 按需取余

    CF 1374A. Required Remainder

    You are given three integers x,y and n. Your task is to find the maximum integer k such that 0≤k≤n that kmodx=y, where mod is modulo operation. Many programming languages use percent operator % to implement it.

    给定3个整数x,y和n,找到一个数k,使得

    \[0⩽k⩽n \]

    ,并且

    \[k \% x = y \]

    In other words, with given x,y and n you need to find the maximum possible integer from 0 to n that has the remainder y modulo x.

    You have to answer t independent test cases. It is guaranteed that such k exists for each test case.

    给定t组测试数据,每组数据保证存在这样的k。

    Input

    The first line of the input contains one integer t (1≤t≤5⋅104) — the number of test cases. The next t lines contain test cases.

    The only line of the test case contains three integers x,y and n (2≤x≤109; 0≤y<x; y≤n≤109).

    It can be shown that such k always exists under the given constraints.

    Output

    For each test case, print the answer — maximum non-negative integer k such that 0≤k≤n and kmodx=y. It is guaranteed that the answer always exists.

    Example

    输入

    7
    7 5 12345
    5 0 4
    10 5 15
    17 8 54321
    499999993 9 1000000000
    10 5 187
    2 0 999999999
    

    输出

    12339
    0
    15
    54306
    999999995
    185
    999999998
    

    比如输入x=7,y=5,n=12345,如何求得k,使得k<12345并且k%7=5呢?

    朴素的做法:遍历n到1,看k%7是否等于5

    换一种思路:考虑p%7是否等于0,如果等于0,p再加上5不就是答案k了吗。显然直接用n/b取底再乘以b即是最大的p。结果可以用公式表示如下:

    \[k=⌊n÷x⌋∗x+y \]

    当我们在解决一个问题的时候,首先看能不能将这个问题转换为相近的问题,间接的去思考最终结果,虽然是一个很小的题目,但是可以多花一点时间思考为什么。

    每天学习一点点,你学会了吗,这是CF最简单的题目啦,加油~

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main() {
        int t; cin >> t;
        ll x, y, n;
        while (t--) {
            cin >> x >> y >> n;
            cout << (n - y) / x * x + y << endl;
        }
        return 0;
    }
    

  • 相关阅读:
    浏览器渲染原理
    element 表单清空提示语(单个 )
    同步异步
    数组的浅克隆
    ... 运算符
    解构赋值
    vue 中el-input 为number 如何控制不允许输入负号
    Android SDK Manager 更新代理配置
    Android 设计中的.9.png
    Android 编程下的 Secret Code
  • 原文地址:https://www.cnblogs.com/RioTian/p/13395004.html
Copyright © 2011-2022 走看看