B. Encuentre el
límite de tiempo de la matriz
por prueba Límite de memoria de 2 segundos por prueba 256 megabytes
entrada entrada
estándar salida salida estándar
Se le proporciona una matriz [a1, a2,…, an] tal que 1≤ai≤109. Sea S la suma de todos los elementos del arreglo a.
Llamemos hermosa a una matriz b de n enteros si:
1≤bi≤109 para cada i de 1 an;
para cada par de números enteros adyacentes de la matriz (bi, bi + 1), bi divide bi + 1 o bi + 1 divide bi (o ambos);
2∑i = 1n | ai − bi | ≤S.
Tu tarea es encontrar una hermosa matriz. Se puede demostrar que siempre existe al menos una hermosa matriz.
Entrada
La primera línea contiene un número entero t (1≤t≤1000) - el número de casos de prueba.
Cada caso de prueba consta de dos líneas. La primera línea contiene un número entero n (2≤n≤50).
La segunda línea contiene n números enteros a1, a2,…, an (1≤ai≤109).
Salida
Para cada caso de prueba, imprima la hermosa matriz b1, b2,…, bn (1≤bi≤109) en una línea separada. Se puede demostrar que existe al menos una hermosa matriz en estas circunstancias. Si hay varias respuestas, imprima cualquiera de ellas.
Ejemplo de entrada
Copiar
4
5
1 2 3 4 5
2
4 6
2
1 1000000000
6
3 4 8 1 2 3
salida Copiar
3 3 3 3 3
3 6
1 1000000000
4 4 8 1 3 3 La
escritura es muy inexplicable, no sé cómo para decirlo, es antes y después Los dos elementos deben satisfacer que la división y la multiplicación en sí deben ser menores que 1, de lo contrario se convierte en 1
#include<iostream>
#include<string>
#include<map>
#include<algorithm>
#include<memory.h>
#include<cmath>
#include<assert.h>
#include<vector>
using namespace std;
typedef long long ll;
const int maxn=2e5+5;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
int a[maxn],b[maxn];
vector<int>l,r;
void solve(){
ll t;
cin>>t;
while(t--){
ll n;
cin>>n;
ll sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
b[1]=a[1];
for(int i=2;i<=n;i++)
{
if(a[i]%b[i-1]==0){
b[i]=a[i];
}
else
{
if(fabs(a[i]-a[i]/b[i-1]*b[i-1])<fabs(a[i]-1))
b[i]=a[i]/b[i-1]*b[i-1];
else{
b[i]=1;
}
}
}
for(int i=1;i<=n;i++){
cout<<b[i]<<' ';
}
cout<<endl;
}
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
solve();
return 0;
}