P13685 【MX-X16-T3】「DLESS-3」XOR and Impossible Problem

· · 题解

这道题看楼下的大佬,不太明白推出来的公式,我就发一篇用暴力水过去的题解吧,首先,我们注意到它是要求累乘和,我们先暴力枚举一下,发现时间复杂度是远远大于题目要求的,我们再想怎么优化,很显然,累乘和,只要有一个数是零,那么乘出来的答案一定是零,这时候直接跳出循环就可以了。

下面附上本蒟蒻的代码:

#include <bits/stdc++.h>

using namespace std;

const int N = 1e6 + 5;

unsigned long long n,t,ans = 1,a[N];
const unsigned long long mod = pow (2,64);

int main () {

    cin >> t;

    while (t --) {

        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 ++) {

                ans = ((ans % mod) * ((a[i] ^ a[j]) % mod)) % mod;
                if (ans == 0) break;//当答案是零的时候直接退出循环,输出答案

            }
            if (ans == 0) break;
        }
        cout << ans % mod << '\n';//别忘了取余
        ans = 1;//答案初始化为一,不然乘出来的答案就都是零了。
    }
    return 0;
}