# PBinfo #3369 – BalancedTernary – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

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.

Cerința
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
Programul va afișa pe ecran o secvență de caractere, reprezentând numărul n scris în baza 3 echilibrată.

Restricții și precizări

0 ≤ n ≤ 1000000000

Exemplu:
Intrare

25
Ieșire

10T1
Explicație
Numărul 25 este egal cu \({3}^{3} * (1) + {3}^{2} * (0) + {3}^{1} * (-1) + {3}^{0} * (1)\) și se scrie în baza 3 echilibrată 10T1.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main()
{
    int v[50] = {0}, len = 0;
    int n;
    cin >> n;
    do
    {
        v[len++] = n % 3;
        n /= 3;
    }
    while(n > 0);
    for(int i = 0; i < len; ++i){
        if(v[i] > 1)
        {
            v[i] -= 3;
            v[i + 1]++;
        }
    }
    if(v[len] == 1)
        len++; //verificam daca s-a adaugat o cifra noua
    for(int i = len - 1; i >= 0; --i)
    {
        if(v[i] == -1)
            cout << "T";
        else
            cout << v[i];
    }
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3369)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3369/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3369/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
