380
Cerința
Se dă un șir de n numere naturale nenule. Determinați pentru fiecare număr din șir care este cel mai mare divizor impar al său.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire
Programul va afișa pe ecran n numere naturale separate prin spații reprezentând cei mai mari divizori impari ai numerelor din șir.
Restricții și precizări
1 ≤ n ≤ 10.000- cele
nnumere citite vor avea cel mult16cifre și vor fi strict pozitive.
Exemplu
Intrare
5 88 25 14 1 6
Ieșire
11 25 7 1 3
#include <bits/stdc++.h>
using namespace std;
long long int cmdi(long long int x)
{
if(x % 2 == 1) return x;
else
while(x % 2 == 0) x/=2;
return x;
}
int main()
{
int n;
cin >> n;
long long int x;
for(int i = 1 ; i <= n ; ++i)
{
cin >> x;
cout << cmdi(x) << ' ';
}
return 0;
}
Comentarii