1840 - P Max

From Bitnami MediaWiki
Revision as of 18:32, 4 January 2024 by Corjuc Eunice (talk | contribs) (Pagină nouă: = Cerința = Se dau <code>n</code> numere naturale, fie acestea <code>A1, A2,..., An</code> și <code>Xi</code> cel mai mic număr care are aceiași factori primi in descompunere ca şi <code>Ai</code>, unde <code>1≤i≤n</code>. Aflați produsul <code>X1 * X2 *...* Xn</code>. = Date de intrare = Programul citește de la tastatură numărul <code>n</code>, iar apoi <code>n</code> numere naturale, separate prin spații. = Date de ieșire = Programul va afișa pe ecran num...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

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[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numărul P, reprezentand numărul cerut.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1000

Exemplul 1[edit | edit source]

Input:

2

45

20

Output:

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.

Exemplul 2[edit | edit source]

Input:

999999999

45

20

Output:

Constrangeri neindeplinite

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def ver(n):

   if not(1<=n<=1000):
       print("Constrangeri neindeplinite")
       exit()

rez = [0] * 100002 p = [0] * 1002

rez[0] = 1 rez[1] = 1

n = int(input()) ver(n) for k in range(1, n + 1):

   p[k] = 1
   x = int(input())
   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 i in range(1, n + 1):

   t = 0
   j = 1
   while j <= rez[0]:
       cif = t + p[i] * rez[j]
       rez[j] = cif % 10
       t = cif // 10
       j += 1
   while t:
       rez[0] += 1
       rez[rez[0]] = t % 10
       t //= 10

for i in range(rez[0], 0, -1):

   print(rez[i], end="")

</syntaxhighlight>