codeforce div1+2 c.Kuroni and Impossible Calculation

在这里插入图片描述
如果我们直接计算的话,复杂度一定无法处理,所以我们需要观察这个式子,尝试从中找到规律,我们发现n的数量可以很大,而对于一系列的连乘取模,只要出现一次0就会全变成0,那么题目中又说有n个不同整数,我们根据鸽巢原理可以发现在这里插入图片描述
只要n>m那么就一定会有两个同余的数,那么这两个数结合时modm一定为0,所以n>m时直接输出0,其他情况只需暴力即可处理‘
代码如下

#include <bits/stdc++.h>
using namespace std;
int n, m;
long long x[1005], ans = 1;
int main() {
	scanf("%d%d", &n, &m);
	if (n > 1005)
		puts("0");
	else {
		for (int i = 0; i < n; i++)
			scanf("%lld", x + i);
		for (int i = 0; i < n; i++)
			for (int j = i + 1; j < n; j++)
				ans = (ans * abs(x[i] - x[j])) % m;
		printf("%lld\n", ans);
	}
}
发布了48 篇原创文章 · 获赞 17 · 访问量 4441

猜你喜欢

转载自blog.csdn.net/weixin_45757507/article/details/104651897