3369 - Balanced Ternary

De la Universitas MediaWiki
Versiunea din 23 martie 2023 16:17, autor: Sovago Rares-Andrei (discuție | contribuții) (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...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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

# 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(