#include #include using namespace std;

vector xorProductTransform(vector& a, int k) { int n = a.size(); vector b = a; while (k > 0) { vector temp = b; for (int i = 0; i < n; i++) { b[i] = 0; for (int j = 0; j < n; j++) { if (j != i) { b[i] ^= temp[j]; } } } k--; } return b; }

int main() { int T; cin >> T; while (T--) { int n, k; cin >> n >> k; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } vector result = xorProductTransform(a, k); for (int i = 0; i < n; i++) { cout << result[i] << " "; } cout << endl; } return 0;

小 H 在课堂上学习了异或运算。对于两个非负整数 ��xy它们的异或是指将它们作为二进制数对二进制表示中的每一位进行如下运算得到的结果:�x 和 �y 的这一位上不同时结果的这一位为 11;�x 和 �y 的这一位上相同时结果的这一位为 00。�x 和 �y 的异或被记为 �xor⁡�xxory 或 �⊕�x⊕y。在 C++ 中你可以用 x ^ y 得到 �x 与 �y 的异或值。另外若干个数的异

原文地址: https://www.cveoy.top/t/topic/hQrM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录