# PBinfo #4486 – genAB – Rezolvare C++

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

## Enunț

Se dau două numere naturale nenule A și B, A ≤ B. Spunem că număr natural x este pe drojdie dacă A ≤ x ≤ B și în plus orice două cifre alăturate ale lui x au diferența în modul egală cu 1. De exemplu, dacă A = 200 și B = 300, atunci numerele pe drojdie sunt 210, 212, 232 și 234.

Cerința
Pentru A și B date, să se afișeze în ordine crescătoare numerele pe drojdie.

Date de intrare
Programul citește de la tastatură A și B.

Date de ieșire
Programul va afișa pe câte un rând, ordonate crescător, numerele pe drojdie.

Restricții și precizări

1 ≤ A ≤ B ≤ 1.000.000.000
Pentru toate testele va exista cel puțin un număr pe drojdie

Exemplu:
Intrare

5 200
Ieșire

5
6
7
8
9
10
12
21
23
32
34
43
45
54
56
65
67
76
78
87
89
98
101
121
123

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
int n, m, A, B;
int sol[3000], k;
int NrCif(int n)
{
    if (n < 10) return 1;
    return 1 + NrCif(n / 10);
}
void Back(int top, int val)
{
    if (top > n)
    {
        if (val >= A && val <= B)
            sol[k++] = val;
    }
    if (top <= m)
    {
        int cif = val % 10;
        for (int i = cif - 1; i <= cif + 1; i += 2)
            if (i >= 0 && i <= 9)
                Back(top + 1, val * 10 + i);
    }
}
int main()
{
    cin >> A >> B;
    n = NrCif(A);
    m = NrCif(B);
    for (int i = 1; i <= 9; i++)
        Back(2, i);
    sort(sol, sol + k);
    for (int i = 0; i < k; i++)
        cout << sol[i] << "\n";
    return 0;
}
```

## Resurse

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