思路

简要题意

给出 LLRRnn,你需要在区间 [L,R][L, R] 中取一个数 kk,使 kmodnk \bmod n 最大。


显然是道大水题。

首先,任何数 (modn)\pmod n 最大只可能为 n1n - 1。如果在 [L,R][L, R] 中能取到 n1n - 1,我们就取;否则,我们取 RmodnR \bmod n

n1n - 1 就取是没什么问题,但是为什么没有 n1n - 1 时取 RmodnR \bmod n 呢?

因为,没有 n1n - 1 可取时,可以发现,Lmodn<(L+1)modn<(L+2)modn<...<(R1)modn<RmodnL \bmod n < (L + 1) \bmod n < (L + 2) \bmod n < ... < (R - 1) \bmod n < R \bmod n

也就是说,(modn)\pmod n 的结果是单调递增的。

这时,最大值肯定为 RmodnR \bmod n

代码

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

int n, l, r, x, ans;
int main(){
	scanf("%d%d%d", &n, &l, &r);
	x = r / n;
	if (n * x - 1 >= l) ans = n - 1;
	else ans = r % n;
	printf("%d", ans);
}