[CSP-J 2021] 分糖果 题解

· · 个人记录

题意:在 [L, R] 之中寻找一个数 x,使得 x \mod n 最大。

可以分成两种情况:

  1. \lfloor L \div n \rfloor < \lfloor R \div n \rfloor

    这样,[L, R] 肯定存在一个数 x,使得 x \mod n = n-1 成立,答案就是 n-1

  2. \lfloor L \div n \rfloor = \lfloor R \div n \rfloor

    直接取 R,余数才能最大。答案为 R - \lfloor L \div n \rfloor * n

#include <bits/stdc++.h>
using namespace std;
long long n, L, R;
int main()
{
    cin >> n >> L >> R;
    long long LCN = L/n, RCN = R/n;
    if (RCN > LCN) {
        cout << n-1 << endl;
        return 0;
    }
    cout << R-LCN*n << endl;
    return 0;
}