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
2
#include <iostream>
using namespace std;
int main()
{
int n, x, i, j, div;
cin>>n;
for(i=0; i<n; i++)
{
cin>>x;
for(j=1; j<=x; j++)
{
if(x%j==0 && j%2==1)
div=j;
}
cout<<div<<" ";
}
return 0;
}
//Programul functioneaza, este testat in prealabil in CodeBlocks
1Viserys:
eventual poti initializa pe x cu long long x; in loc de int x; pt ca poate avea pana in 16 cifre
Răspuns de
4
#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;
}
Acest cod da 100 pe pbinfo
Alte întrebări interesante
Engleza,
8 ani în urmă
Informatică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Informatică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă