C语言写的只有第一个点对,为什么呀?
查看原帖
C语言写的只有第一个点对,为什么呀?
1083693
2023lumingxin楼主2024/3/23 12:23
#include<stdio.h>
long long a[100005] = { 0 };
int int_cmp(const void* p1, const void* p2)
{
	return *((int*)p1) - *((int*)p2);
}
int main()
{
	int N = 0;
	scanf("%d", &N);
	int i = 0;
	for (i = 1; i <= N; i++)
	{
		scanf("%lld", &a[i]);
	}
	qsort(a, N, sizeof(a[0]), int_cmp);
	long long d = a[2]-a[1];
	long long counts = 0;
	if (d == 0)
		counts = N;
	else
	{
		int flag = 1;
		while (flag)
		{
			long long t = d;
			for (i = 1; i <= N; i++)
			{
				if ((a[i] - a[1]) % d != 0)
					d--;
			}
			if (t == d)
				flag = 0;
		}
		counts = ((a[N] - a[1]) / d)+1;
	}
	printf("%lld\n", counts);
	return 0;
}
2024/3/23 12:23
加载中...