3369 - Balanced Ternary
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(