解题思路:
1.首先,看到数据规模,10的9次方,利用for循环暴力求解的话肯定会超时,不会拿满分,那么就要分析如何来简化结构
2.分析情况,要求他剩下的糖果最多,那么最多的时候不会超过n-1,因为一旦超过n-1,则又可以发一轮了,所以最大值为n-1
3.再来分析最小值,最小值就当拿L块糖果的时候,得到的糖果为L%n,上下限都确定,现在就来分析,最大范围的R
4.如果L-R中的数k%n一直是单调递增的,那么R就是应该取的糖果,输出R%n,如果第一个递增已经结束了,k%n=n-1,但是k<R,那么也就没有必要往后遍历了,最大值已经出现,输出n-1即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,l,r;
cin>>n>>l>>r;
if(r>=l+n-l%n-1)
cout<<n-1;//如果r超过了到达第一个余数为n-1的值,输出n-1
else
cout<<r%n;//否则没有到达顶点,r就是最优解
return 0;
}