题目传送门
算法解析
首先简化一下题目:取一个值 k k k,使 L ≤ k ≤ R L \leq k \leq R L≤k≤R,输出最大的 k % n k \% n k%n
一个数 % n \% n %n,最大一定是 n − 1 n - 1 n−1
也就说明这个数一定等于 x ⋅ n − 1 x \cdot n - 1 x⋅n−1
那我们就可以判断有没有一个 x x x 使 L ≤ x ⋅ n − 1 ≤ R L \leq x \cdot n - 1 \leq R L≤x⋅n−1≤R
如果有就输出 n − 1 n - 1 n−1
没有就输出 R % n R \% n R%n (仔细想一想)
具体请参考代码
总代码
#include <cstdio>
using namespace std;
int n, l, r;
int x;
int main() {
scanf("%d%d%d", &n, &l, &r);
while(n * x - 1 < l)
++x;
if(n * x - 1 >= l && n * x - 1 <= r)
printf("%d\n", n - 1);
else
printf("%d\n", r % n);
return 0;
}
提交记录
尾声
如果这篇博客对您(您的团队)有帮助的话,就帮忙点个赞,加个关注!
最后,祝您(您的团队)在 OI 的路上一路顺风!!!
┬┴┬┴┤・ω・)ノ ByeBye