1:
a
1
a_1
a1 =
b
1
b_1
b1
(
m
o
d
k
)
\pmod{k}
(modk)
2 :
a
2
a_2
a2 =
b
2
b_2
b2
(
m
o
d
k
)
\pmod{k}
(modk)
即
a
1
a_1
a1 -
a
2
a_2
a2 =
b
1
b_1
b1 -
b
2
b_2
b2
(
m
o
d
k
)
\pmod{k}
(modk)
当b1等于b2时是错误的,即
a
1
a_1
a1 -
a
2
a_2
a2 = 0
(
m
o
d
k
)
\pmod{k}
(modk)
故
a
1
a_1
a1 -
a
2
a_2
a2 的所有因子都不能满足
标记出所有a的差值,最后从n -> max+1 枚举,判断当前数是否符合条件
c++ 代码:
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const double eps = 1e-4;
const int mod = 999911659;
const int N = 1000010;
int a[N],book[N];
signed main(){
IOS;
int n,ma = -INF; cin>>n;
for(int i=0;i<n;i++) cin>>a[i],ma = max(a[i],ma);
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
book[abs(a[i]-a[j])] = 1;
int pos = 0;
for(int i=n;i<=ma+1&&!pos;i++){
if(book[i] == 0){
bool plas = false;
for(int j=i+i;j<=ma+1&&!plas;j += i){
if(book[j]) plas = true;
}
if(!plas) pos = i;
}
}
cout<<pos<<endl;
return 0;
}
java
import java.io.*;
import java.util.*;
public class Main {
/*_________________________________________________________________________*/
/* 快读 */
static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static int nextint() throws IOException {in.nextToken();return (int)in.nval;}
/*字符串输入*/
static BufferedReader inb=new BufferedReader(new InputStreamReader(System.in));
/*_________________________________________________________________________*/
static final int INF = 0x3f3f3f3f;
public static void main(String[] args) throws IOException {
Scanner ina = new Scanner(System.in);
int n = ina.nextInt(),ma = -INF;
int[] a = new int[n+2];
int[] book = new int[1000010];
for(int i=0;i<n;i++) {
a[i] = ina.nextInt();
ma = Math.max(ma,a[i]);
}
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
book[Math.abs(a[i]-a[j])] = 1;
int pos = 0;
for(int i=n;i<=ma+1&&pos==0;i++) {
if(book[i] == 0) {
int plas = 1;
for(int j=i+i;j<=ma+1&&plas==1;j+=i) {
if(book[j] == 1) plas = 0;
}
if(plas == 1) pos = i;
}
}
System.out.println(pos);
ina.close();
}
}