Rezolvare completă PbInfo #1910 NumarMinim0

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema NumarMinim0:

#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;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1910 NumarMinim0

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1910 NumarMinim0 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!