fbpx

Problema #1840 – PMax – Rezolvari PBInfo

de Mihai-Alexandru

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.

#include <bits/stdc++.h>
using namespace std;
int a[1001] , v[1001] , b[10001];
int mic(int n)
{
    int prod = 1 , d = 2;
    while(n > 1)
    {
        int p = 0;
        while(n%d==0) p++ , n/=d;
        if(p > 0) prod*=d;
        d++;
        if(d * d > n) d = n;
    }
    return prod;
}
int main()
{
    int n;
    cin >> n;
    for(int i = 0 ; i < n ; ++i)
        cin >> a[i];
    for(int i = 0 ; i < n ; ++i)
        v[i]=mic(a[i]);
    b[1]=1;
    int c=1;
    for(int i=0; i<n; i++)
    {
        int t=0;
        for(int j=1; j<=c; j++)
        {
            int cif=b[j]*v[i]+t;
            b[j] = cif % 10;
            t=cif/10;
        }
        while(t)
        {
            b[++c]=t%10;
            t/=10;
        }
    }
    for(int i = c ; i >= 1 ; --i)
        cout << b[i];
    return 0;
}
Comentarii

S-ar putea sa iti placa