fbpx

Problema #2697 – Divizori – Rezolvari PBInfo

de Mihai-Alexandru

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 n numere citite vor avea cel mult 16 cifre ș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

S-ar putea sa iti placa