题意:
给我们一个数组a,让我们求出任意一个数组b,满足:
题目保证有解
思路:
利用二进制,找到ai的最高位1输出即可,这样找到的每个数肯定互相都能整除,其次,相减之后在乘以2肯定是 <= ai 的,所以每个相加一定 <= s
#include<iostream>
using namespace std;
int main(){
int t;
cin >>t;
while(t--){
int n;
cin >> n;
while(n--){
int x;
cin >> x;
int tmp = 1 << 30;
while(!(x&tmp)) tmp >>=1;
cout<<tmp<<" ";
}
cout<<endl;
}
}