请问那些 1s 左右完成的是什么思路?为什么我 3s
代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 1;
inline vector<int> change(vector<int> vec, int x){
vector<int> res;
for(int i = 0; i < vec.size(); i++){
res.push_back(vec[i]^x);
}
return res;
}
inline void Solve(){
vector<int> vec;
int n, k, a, Xor = 0;
cin >> n >> k;
if(n % 2 == 0){
k %= 2;
for(int i = 1; i <= n; i++){
cin >> a;
Xor ^= a;
vec.push_back(a);
}
while(k--){
vec = change(vec, Xor);
Xor = 0;
for(auto p : vec) Xor ^= p;
}
for(int i = 0; i < vec.size(); i++) cout << vec[i] << " \n"[i==vec.size()-1];
//cout << endl;
}else{
if(k > 0) k = 1;
for(int i = 1; i <= n; i++){
cin >> a;
Xor ^= a;
vec.push_back(a);
}
while(k--){
vec = change(vec, Xor);
Xor = 0;
for(auto p : vec) Xor ^= p;
}
for(int i = 0; i < vec.size(); i++) cout << vec[i] << " \n"[i==vec.size()-1];
//cout << endl;
}
return;
}
signed main(){
//freopen("output.txt", "w", stdout);
int T;
cin >> T;
while(T--){
Solve();
}
return 0;
}