Informatică, întrebare adresată de telefarsep3q020, 8 ani în urmă

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

Răspunsuri la întrebare

Răspuns de boiustef
3

Răspuns:

#include <iostream>

using namespace std;

long long divMaxImpar(long long num)

{

   while (num%2==0)

       num/=2;

   return num;

}

int  main()

{

   long long n, i, num;

   cin >> n;

   for (i=1; i<=n; ++i)

   {

       cin >> num;

       cout << divMaxImpar(num) << " ";

   }

   return 0;

}

Explicație:

În funcţia divMaxImpar(num) , prin divizări prin 2 scot paritatea din num şi numărul impar îbţinut va fi cel mai matr divizor impar. De exemplu dacă num=56,  împărţind de 3 ori la 2 obţinem 7

Alte întrebări interesante