甚至第一篇题解都特判了一个点
#include <bits/stdc++.h>
using namespace std;
int minn = 0x3f3f3f3f;
int a[105],p[10005],cnt;
int main(){
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++)
for (int j = i+1; j <= n; j++){
p[++cnt] = abs(a[i]-a[j]);
minn = min(minn,p[cnt]);
}
for (int i = 2; i <= minn; i++){
bool t = 1;
for (int j = 1; j <= cnt; j++){
if (p[j] % i != 0) {
t = 0;
break;
}
}
if (t) cout << i << " ";
}
}
这个可以AC
#include <bits/stdc++.h>
using namespace std;
int minn = 1e9+5;
int a[105],p[10005],cnt;
int main(){
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++)
for (int j = i+1; j <= n; j++){
p[++cnt] = abs(a[i]-a[j]);
minn = min(minn,p[cnt]);
}
if (minn != 1e9+5)cout << minn << " ";
else cout << a[1] << " ";
for (int i = 2; i*i <= minn; i++){
bool t = 1;
for (int j = 1; j <= cnt; j++){
if (p[j] % i != 0) {
t = 0;
break;
}
}
if (t) {
cout << i << " ";
if (i*i != minn) cout << minn/i << " ";
}
}
}
这个却会WA一个点。。
QAQ