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