【Codeforces】1593D1 All are Same

原题链接:

D1. All are Same

思维点:

  • 假设我们把 所有的数 都减小到与 原数列的最小值 相同,那么题目可以转化为求 除最小值外的所有数 与 最小值 的差值的 最大公约数

  • 当所有数相等时,k可以任意大

ac代码:

#include<cstdio>
#include<algorithm>
using namespace std;
int main() {
	int t;
	scanf("%d", &t);
	while (t--) {
		int n, a[40];
		scanf("%d", &n);
		for (int i = 0; i < n; i++) 
			scanf("%d", &a[i]);
		sort(a, a + n);//找到最小值, a[0] 
		
		int ans = a[1] - a[0];
		for (int i = 2; i < n; i++) {
			ans = __gcd(ans, a[i] - a[0]);
		}
		if(ans == 0) printf("-1\n"); 
		else printf("%d\n", ans);
	}
	return 0;
}
上一篇:Java框架!java如何查看变量类型


下一篇:day14互联网Part_1