专栏文章
题解:P14566 【MX-S12-T1】取模
P14566题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @min32vw0
- 此快照首次捕获于
- 2025/12/01 19:46 3 个月前
- 此快照最后确认于
- 2025/12/01 19:46 3 个月前
思路
对于任意正整数 ,余数的取值范围是 ,当余数同时包含 和 时,得分为 。
- 选择足够大的 (如 ),此时余数就是原数,得分为 ;
- 选择 ,此时最大余数是次大值,最小余数是 ,得分为次大值。
步骤
- 对数组排序并去重(要是严格次大值);
- 如果去重后只剩一个元素,得分为 ;否则,答案为极差和次大值中的最大值。
代码实现
CPP#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[100010];
signed main(){
int T;
cin>>T;
int mod;
int ans=0;
int n;
while(T--){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
n=unique(a+1,a+n+1)-(a+1);
ans=max(a[n]-a[1],a[n-1]);
cout<<ans<<"\n";
}
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...