3369 - Balanced Ternary

From Bitnami MediaWiki
Revision as of 16:17, 23 March 2023 by Sovago Rares-Andrei (talk | contribs) (Pagină nouă: == Cerinţa == Reprezentarea unui număr natural în baza '''3''' echilibrată conține cifrele '''1 0 -1''' și se obține scriind numărul ca sumă de puteri ale lui '''3''', înmulțite cu '''-1, 1 sau 0'''. Pentru a evita confuziile, cifra egală cu '''-1''' se notează cu '''T''', astfel că cifrele din baza '''3''' echilibrată sunt '''1 0 T'''. Astfel, numărul 11 este egal cu '''3^2∗(1)+3^1∗(1)+3^0∗(−1)'''și se reprezintă în baza '''3''' echilibrată '''11T...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Reprezentarea unui număr natural în baza 3 echilibrată conține cifrele 1 0 -1 și se obține scriind numărul ca sumă de puteri ale lui 3, înmulțite cu -1, 1 sau 0. Pentru a evita confuziile, cifra egală cu -1 se notează cu T, astfel că cifrele din baza 3 echilibrată sunt 1 0 T. Astfel, numărul 11 este egal cu 3^2∗(1)+3^1∗(1)+3^0∗(−1)și se reprezintă în baza 3 echilibrată 11T.Se dă un număr natural n.

Să se reprezinte numărul în baza 3 echilibrată.

Date de intrare

Programul citește de la tastatură numărul natural n.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", programul va afișa pe ecran o secvență de caractere, reprezentând numărul n scris în baza 3 echilibrată. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".

Restricţii şi precizări

  • 0 ≤ n ≤ 1000000000


Exemple

Exemplul 1

Intrare
25
Ieșire
Datele sunt introduse corect.
10T1

Exemplul 2

Intrare
999999999
Ieșire
Datele nu corespund restricțiilor impuse.

Exemplul 3

Intrare
27
Ieșire
Datele sunt introduse corect.
1000



Rezolvare

<syntaxhighlight lang="python" line="1">

  1. 3369 - Balanced Ternary

def validare_numar_natural(n):

   if n < 0 or n > 1000000000:
       return False
   else:
       return True

def reprezentare_baza_3_echilibrata(n):

   reprezentare = ""
   while n != 0:
       rest = n % 3
       n //= 3
       if rest == 2:
           rest = "T"
           n += 1
       reprezentare = str(rest) + reprezentare
   if reprezentare == "":
       reprezentare = "0"
   return reprezentare

def main():

   n = int(input("Introduceți un număr natural: "))
   if validare_numar_natural(n):
       print("Datele sunt introduse corect.")
       print("Reprezentarea în baza 3 echilibrată a numărului dat este:", reprezentare_baza_3_echilibrata(n))
   else:
       print("Datele nu corespund restricțiilor impuse.")

if __name__ == "__main__":

   main(




</syntaxhighlight>