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
<syntaxhighlight lang="python" line="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>