👤

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ăspuns :

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

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!


ID Learners: Alte intrebari