题目链接:https://bzoj.org/p/P00324
Description
给你三个数 n,l,r,让你在[l,r]中找到一个整数x,使x mod n的值尽可能的大,输出这个最大的值。
Input
一行给出三个数字n,l,r 2≤n≤l≤r≤1e9
Output
如题
Samples
输入数据 1
7 16 23
输出数据 1
6
Hint 在区间[16,23]之间可取20,20%7=6.
Sol:很简单,做一个由l到r的for循环,但是因为最大值可以是1e9,这么找肯定会超时,所以如果找到了一个数mod n=n-1时,便可以退出循环.
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,l,r,res=0,maxx=0;
cin>>n>>l>>r;
for(int i=l;i<=r;i++){
if(maxx==n-1) break;//找到了一个数mod n=n-1时,便退出循环
res=i%n;
maxx=max(res,maxx);
}
cout<<maxx;
return 0;
}
创作不易,点个赞再走吧!
标签:23,int,16,1e9,区间,取值,mod From: https://www.cnblogs.com/Ace-29/p/18282699