(悬关)我不理解
查看原帖
(悬关)我不理解
704668
WZWZWZWY楼主2023/10/12 19:12

甚至第一篇题解都特判了一个点

#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

2023/10/12 19:12
加载中...