- 分享
Day4总结(第一题)
- @ 2024-10-5 20:31:00
题目描述
白浅妹妹今天学习了求余,她已经学会了,但是老师还是给了她𝑛个数字让她练习求余。 但是老师只给了𝑛个被除数,并没有说除数是几,只说除数的范围是[𝑙,𝑟]白浅妹妹决定自己设置除数,于是她从 [𝑙,𝑟]中选择了一个正整数𝑘,然后对每一个数字都对𝑘求余,得到了𝑛个新的数字。 白浅妹妹希望𝑛个新的数字之和尽可能小,于是她想问问你应该如何设置𝑘,如果有多种可能的答案,请输出最小的那一个。
分析:这题数据范围较小,暴力枚举能拿满分。外层循环l~r,内层循环0~n-1,用一个变量sum来累加数字求余k之后的数。用变量mi记录最小值,这里不用担心特殊情况n=1。
代码:
#include<bits/stdc++.h>
using namespace std;
int n,l,r;
int chu[3005];
int mi=0x3f3f3f3f,mi2;
int main(){
freopen("mod.in","r",stdin);
freopen("mod.out","w",stdout);
cin>>n>>l>>r;
for(int i=0;i<n;i++) cin>>chu[i];
for(int i=l;i<=r;i++){
long long sum=0;
for(int j=0;j<n;j++) sum+=chu[j]%i;
if(mi>sum){
mi=sum;
mi2=i;
}
if(mi==0){
cout<<mi2;
return 0;
}
}
cout<<mi2;
return 0;
}
0 条评论
目前还没有评论...