Informatică, întrebare adresată de pmarian98, 8 ani în urmă

#1915 NumarMinim1

Cerința
Georgiana nu are clipă de răgaz. Profesorul de info îi cere acum să afle cel mai mic număr natural de n cifre care împărţit la b dă restul r. Poate o ajutaţi să treacă şi peste acest hop.

Date de intrare
Programul citește de la tastatură numerele n, b şi r.

Date de ieșire
Programul va afișa pe ecran numărul cerut.

Restricții și precizări
1 ≤ n ≤ 100.000
2 ≤ b ≤ 1.000.000.000
0 ≤ r < b
dacă numărul nu există se va afişa -1



Exemplu
Intrare

5 97 14
Ieșire

10005
Explicație
Cel mai mic număr de 5 cifre care împărţit la 97 dă restul 14 este 10005.

Răspunsuri la întrebare

Răspuns de NiceShotVi
7

Aceasta este soluția oficială a problemei:

#include <iostream>

using namespace std;

long long n,b,r,k,x,s,i,nr ;

int main()

{

   cin >> n >> b >> r ;

   // numarul cifrelor lui r

   k = 0 ;

   x = r ;

   while ( x != 0 )

   {

       k++ ;

       x = x / 10 ;

   }

   // afisare

   if ( k > n ) cout << -1 ;

   else if ( k == n ) cout << r ;

        else

          {

             s = 1 ;

             for ( i = 2 ; i <= n ; i++ ) s = ( s * 10 ) % b ;

             if ( s <= r ) nr = r - s ;

             else nr = b - s + r ;

             if ( nr == 0 )

             {

                 cout << 1 ;

                 for ( i=1 ; i<=n-1 ; i++ ) cout << 0 ;

             }

             else

             {

             k = 0 ;

             x = nr ;

             while ( x != 0 )

              {

                k++ ;

                x = x / 10 ;

              }

             cout << 1 ;

             for ( i=1 ; i<=n-k-1 ; i++ ) cout << 0 ;

             cout << nr ;

             }

          }

   return 0;

}

Alte întrebări interesante