题意:
给出a数组及其范围,要求构造b数组使得sigma(ai * bi) == 0
思路:
两两凑0
// Decline is inevitable,
// Romance will last forever.
#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define pii pair<int,int>
#define fi first
#define se second
#define ll long long
#define LL long long
#define int long long
const int maxn = 1e5 + 10;
const int maxm = 1e3 + 10;
const int INF = 0x3f3f3f3f;
const int dx[] = {0, 0, -1, 1}; //{0, 0, 1, 1, 1,-1,-1,-1}
const int dy[] = {1, -1, 0, 0}; //{1,-1, 1, 0,-1, 1, 0,-1}
const int P = 1e9 + 7;
int n;
int a[maxn];
int ans[maxn];
void solve() {
cin >> n;
for(int i = 1; i <= n; i++)
ans[i] = 0;
for(int i = 1; i <= n; i++)
cin >> a[i];
if(!(n&1)) {
for(int i = 1; i <= n; i++) {
if(i & 1) ans[i] = a[i+1];
else ans[i] = -a[i-1];
}
for(int i = 1; i <= n; i++)
cout << ans[i] << ' ';
cout << '\n';
return;
}
for(int i = 1; i < n; i++) {
if(i & 1) ans[i] = a[i+1];
else ans[i] = -a[i-1];
}
while(ans[1] == 0 || ans[n] == 0) {
ans[n] += a[1];
ans[1] -= a[n];
}
for(int i = 1;i <= n; i++)
cout << ans[i] << ' ';
cout << '\n';
}
signed main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
// int T; scanf("%d", &T); while(T--)
// freopen("1.txt","r",stdin);
// freopen("2.txt","w",stdout);
// cout << lcm(1, -2);
int T; cin >> T;while(T--)
solve();
return 0;
}
/*
*/