4249 - Inlocuire Cmmdc Oglindit: Difference between revisions

From Bitnami MediaWiki
mNo edit summary
Tag: visualeditor
 
Line 30: Line 30:


[4, 2, 1, 5, 9, 9, 7]
[4, 2, 1, 5, 9, 9, 7]
Explicație:
Modificările efectuate sunt:
7 se înlocuiește cu 7 deoarece cmmdc(7,7) este 7.
18 se înlocuiește cu 9 deoarece cmmdc(18,81) este 9.
18 se înlocuiește cu 9 deoarece cmmdc(18,81) este 9.
14 se înlocuiește cu 1 deoarece cmmdc(14,41) este 1.
20 se înlocuiește cu 2 deoarece cmmdc(20,2) este 2.
4 se înlocuiește cu 4 deoarece cmmdc(4,4) este 4.
La final, elementele sunt afișate de la dreapta la stânga.


== Exemplul 2 ==
== Exemplul 2 ==

Latest revision as of 06:20, 11 December 2023

Cerința[edit]

Se dă un tablou cu n elemente, numere naturale mai mari decât 1. Să se înlocuiască fiecare element din tablou cu cel mai care divizor comun al său cu oglinditul său și apoi să afișeze elementele din tabloului de la dreapta la stânga.

Se vor defini și apela următoarele subprograme:

  • citire, care citește de la tastatură valoarea lui n și cele n elemente ale tabloului
  • afisare, care afișează pe ecran elementele tabloului printr-o parcurgere de la dreapta la stânga, separate prin exact un spațiu
  • oglindit, care determină oglinditul unui număr dat
  • cmmdc, care calculează cel mai care divizor comun a două numere date

Date de intrare[edit]

Se citește de la tastatură numărul n, iar apoi cele n elemente ale tabloului.

Date de ieșire[edit]

Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.

Restricții și precizări[edit]

  • 1 ≤ n ≤ 1000
  • elementele tabloului vor fi mai mici decât 1.000.000.000

Exemplul 1[edit]

Input:

7

7 18 18 5 14 20 4

Output:

[4, 2, 1, 5, 9, 9, 7]

Explicație:

Modificările efectuate sunt:

7 se înlocuiește cu 7 deoarece cmmdc(7,7) este 7.

18 se înlocuiește cu 9 deoarece cmmdc(18,81) este 9.

18 se înlocuiește cu 9 deoarece cmmdc(18,81) este 9.

14 se înlocuiește cu 1 deoarece cmmdc(14,41) este 1.

20 se înlocuiește cu 2 deoarece cmmdc(20,2) este 2.

4 se înlocuiește cu 4 deoarece cmmdc(4,4) este 4.

La final, elementele sunt afișate de la dreapta la stânga.

Exemplul 2[edit]

Input:

0

7 18 18 5 14 20 4

Output:

Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.

Rezolvare[edit]

<syntaxhighlight lang="python3" line="1"> def validate_input_restrictions(n, tablou):

   if not 1 <= n <= 1000:
       print("Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.")
       return False   
   if any(x <= 1 or x >= 1000000000 for x in tablou):
       print("Elementele tabloului trebuie să fie mai mari decât 1 și mai mici decât 1.000.000.000.")
       return False
   return True

def citire():

   n = int(input("Introduceți numărul n="))
   print("Introduceți elemente vector")
   vector = list(map(int, input().split()))
   return n,vector

def afisare(vector):

   print(vector[::-1])

def oglindit(x):

   aux=0
   while x!=0:
       aux = aux*10 + x % 10
       x//=10
   return aux

def cmmdc(x):

   a=oglindit(x)
   while x != a:
       if x>a:
           x-=a
       else:
           a-=x
   return x

def inloc(vector):

   for i in range(len(vector)):
       aux=cmmdc(vector[i])
       vector[i]=aux
   return vector


def main():

   n, tablou = citire()
   if not validate_input_restrictions(n, tablou):
       return
   tablou=inloc(tablou)
   afisare(tablou)

if __name__ == "__main__":

   main()

</syntaxhighlight>