# PBinfo #1910 – NumarMinim0 – Rezolvare C++

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

## Enunț

Cerința
Georgiana a mai primit o problemă de la doamna profesor. Se dau n triplete de forma m, b, r, iar pentru fiecare triplet Georgiana trebuie să afle care este cel mai mic număr natural format cu m cifre, care împărţit la b dă restul r.  

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n triplete de numere naturale.

Date de ieșire
Programul va afișa pe ecran, pe linii separate, cele n numere cerute.

Restricții și precizări

1 ≤ n ≤ 10
1 ≤ m ≤ 100.000
2 ≤ b ≤ 10
0 ≤ r < b

Exemplu:
Intrare

3
2 3 1
3 5 4
4 6 0
Ieșire

10
104
1002
Explicație
Cel mai mic număr de două cifre care dă restul 1 la împarţirea cu 3 este 10.
Cel mai mic număr de trei cifre care dă restul 4 la împarţirea cu 5 este 104.
Cel mai mic număr de patru cifre care dă restul 0 la împarţirea cu 6 este 1002.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int n , m , b , r , c , r1, n1 , j, i , x[10] ,t ;
char a[1001] ;
void afis(int n1 , int u)
{
        cout << 1 ;
        c = (n1-1) / 1000 ;
        r1 = (n1-1) % 1000 ;
        if (r1==0){c-- ; r1=1000 ;}
        for ( j=1 ; j<=c ; j++) cout << a ;
        for(j=1 ; j<=r1-1 ; j++) cout << 0 ;
        cout << u << "\n";
}
int main()
{
    cin >> n ;
    for(i=0 ; i<=999 ; i++)a[i]='0';
    for ( i=1 ; i<=n ; i++ )
    {
        cin >> m >> b >> r ;
        if ( m==1 ) cout << r << "\n" ;
        else
        {
        switch (b)
        {
            case 2  :
                afis(m,r);
                break ;
            case 5  :
                afis(m,r);
                break ;
            case 10  :
                afis(m,r);
                break ;
            case 3 :
                afis(m,(r+2)%3);
                break ;
            case 9  :
                afis(m,(r+8)%9);
                break ;
            case 6 :
                afis(m,(r+2)%6);
                break ;
            case 4 :
                if ( m==2 ) afis(m,(r+2)%4);
                else afis(m,r);
                break ;
            case 7 :
                x[2] = 4 ;
                x[3] = 5 ;
                x[4] = 1 ;
                x[5] = 3 ;
                x[0] = 2 ;
                x[1] = 6 ;
                t = m % 6 ;
                afis(m,(r+x[t])%b);
                break ;
            case 8 :
                if ( m==2 ) afis(m,(r+6)%8);
                else if (m==3) afis(m,(r+4)%8);
                     else afis(m,r);
                break ;
        }
        }
    }
    return 0;
}
```

## Resurse

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