# Palindrom, oglindit și cifra de control

> Pagina: https://bacalaurescu.ro/informatica/lectii/algoritmi-fundamentali/palindrom-si-cifra-de-control
> Markdown: https://bacalaurescu.ro/informatica/lectii/algoritmi-fundamentali/palindrom-si-cifra-de-control.md
> Sursa: Bacalaurescu (bacalaurescu.ro), conținut gratuit pentru BAC 2027.

Materia: [Informatică](https://bacalaurescu.ro/informatica)

Capitolul: [Algoritmi fundamentali](https://bacalaurescu.ro/informatica/lectii/algoritmi-fundamentali)
Actualizat: 2026-11-01

Trei prelucrări clasice de cifre care apar constant la subiectul I și II.

## Pe scurt pentru BAC

- Un număr e palindrom dacă e egal cu oglinditul lui, cum sunt 121, 3443 sau 7.
- În programul pentru cifra de control, bucla exterioară continuă cât timp `n > 9` și pune la fiecare pas `n = s`.
- Pentru 9875 sumele succesive sunt 29, apoi 11, apoi 2, deci cifra de control este 2.
- La „ce afișează”, urmărești oglinditul într-un tabel cu n, n%10 și ogl pe fiecare linie.

## Oglinditul unui număr

```cpp
int n, ogl = 0;
cin >> n;
while (n > 0) {
    ogl = ogl * 10 + n % 10;
    n = n / 10;
}
cout << ogl;
```

Pentru n = 1234: ogl devine 4, 43, 432, 4321. Atenție: n se DISTRUGE în proces; dacă îl mai folosești, salvează o copie.

## Testul de palindrom

Un număr e palindrom dacă e egal cu oglinditul lui (121, 3443, 7).

```cpp
int n, copie, ogl = 0;
cin >> n;
copie = n;
while (n > 0) {
    ogl = ogl * 10 + n % 10;
    n /= 10;
}
if (copie == ogl) cout << "DA";
else cout << "NU";
```

## Cifra de control

**Cifra de control** = aplici repetat suma cifrelor până rămâne O SINGURĂ cifră.

Pentru 9875: $9+8+7+5 = 29 \to 2+9 = 11 \to 1+1 = 2$. Cifra de control: **2**.

```cpp
int n;
cin >> n;
while (n > 9) {
    int s = 0;
    while (n > 0) {
        s += n % 10;
        n /= 10;
    }
    n = s;
}
cout << n;
```

Scurtătura matematică (pentru verificare rapidă): cifra de control este $1 + (n - 1) \bmod 9$ pentru $n > 0$ (restul modulo 9, cu 9 în loc de 0). Pentru 9875: $9875 = 9 \cdot 1097 + 2$, deci 2 ✓.

> [!ATENTIE]
> La subiectul "ce afișează", urmărește oglinditul în tabel pas cu pas: (n, n%10, ogl) pe fiecare linie. Din 3 pași scriși corect, restul devine mecanic.

> [!RETINE]
> La palindrom compari oglinditul cu o COPIE a lui `n`, făcută înainte de buclă. Cifra de control se obține repetând suma cifrelor până rămâne o singură cifră; pentru $n > 0$ ea este $1 + (n - 1) \bmod 9$ (9875 dă 2).

## Greșeli frecvente

1. Uitarea copiei la palindrom: după buclă n e 0, comparația n == ogl e mereu falsă (except 0).
2. La oglindit, numerele terminate în 0 pierd zeroul (120 → 21): e comportamentul corect matematic, dar menționează-l dacă se cere.
3. Cifra de control cere DOUĂ bucle imbricate (sau formula mod 9), nu o singură sumă.
