C. Kuroni and Impossible Calculation
https://codeforces.com/contest/1305/problem/C
题意:给定n个数,对n个数的所以有序对(i, j)的差的绝对值进行累乘,并对m进行取模。
思路:1 <= n <= 2e5, 1 <= m <= 1000,如果n > m,则结果必然是0,根据鸽巢原理,num > m,则存在至少一对相同的数,这对相同的数的差为0,参与到乘法运算中,最终结果为0。否则,直接BF即可。
总结:假如没有绝对值的限制,如何考虑?应该是依然先考虑n 是否 > m,满足条件就直接0,没问题。否则,还是暴力破解,只是不加绝对值了,然后负数取模好像要注意一下。
inline void solve() {
int n, m;
cin >> n >> m;
vector<int> a(n);
for (auto& x : a) {
cin >> x;
}
if (n > m) {
cout << "0\n";
return;
}
long long ans = 1;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
ans = ans * abs(a[i] - a[j]) % m;
}
}
cout << ans << endl;
}

浙公网安备 33010602011771号