# PBinfo #1840 – PMax – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dau n numere naturale, fie acestea A1, A2,..., An și Xi cel mai mic număr care are aceiași factori primi in descompunere ca şi Ai, unde 1≤i≤n. Aflați produsul X1 * X2 *...* Xn.

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 numărul P, reprezentand numărul cerut.

Restricții și precizări

1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu:
Intrare

2
45 20
Ieșire

150
Explicație
45 = 5 * 3 * 3,  20 = 2 * 2 * 5. Cel mai mic număr care are factorii 3 și 5 in descompunere este 15, iar cu factorii 2 și 5 este 10. 
15 * 10 = 150.

## Cod sursă C++

```cpp
///Moca Andrei - 100p
#include <iostream>
using namespace std;
int rez[100002], p[1002], n, x;
int main()
{
	rez[0] = 1;
	rez[1] = 1;
	cin >> n;
	for (int k = 1; k <= n; k++)
    {
        p[k] = 1;
        cin >> x;
        int d = 2;
        while (x != 1)
        {
            if (x % d == 0)
                p[k] *= d;
            while (x % d == 0)
                x /= d;
            if (d == 2) d = 3;
            else d += 2;
            if (d * d > x) d = x;
        }
    }
	for(int i = 1 ; i <= n ; ++i)
	{
		int t = 0;
		for(int j = 1 ; j <= rez[0] ; j++)
		{
			int cif = t + p[i] * rez[j];
			rez[j] = cif % 10;
			t = cif / 10;
		}
		while(t)
			rez[++rez[0]] = t % 10, t /= 10;
	}
	for(int i = rez[0] ; i > 0 ; i--)
		cout << rez[i];
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1840)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1840/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1840/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
