# PBinfo #1925 – Numar9 – Rezolvare C++

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

## Enunț

Cerința
Se dau două numere naturale S şi K. Să se afle cel mai mic număr natural A care are suma cifrelor egală cu S, precum şi restul împărţirii lui A la K.

Date de intrare
Fișierul de intrare numar9.in conține pe prima linie numerele naturale S şi K.

Date de ieșire
Fișierul de ieșire numar9.out va conține pe prima linie numărul A, iar pe a doua linie restul împărţirii lui A la K.

Restricții și precizări

1 ≤ S ≤ 20.000.000
1 ≤ K ≤ 1.000.000
Pentru prima cerinţă se acordă 60p, iar pentru a doua 40p
Pentru a primi punctajul pentru a doua cerinţă, în fişierul numar9.out trebuie să afişaţi două numere

Exemplu:
numar9.in

25 13
numar9.out

799
6
Explicație
Cel mai mic număr natural care are suma cifrelor egală cu 25 este 799. Restul împărţirii lui 799 la 13 este 6.

## Cod sursă C++

```cpp
#include <fstream>
#define a 999999999
using namespace std;
ifstream f("numar9.in");
ofstream g("numar9.out");
long long s , k , i , r , c , x , m , n ;
int main()
{
    f >> s >> k ;
    r = s % 9 ;
    c = s / 9 ;
    m = c / 9 ;
    n = c % 9 ;
    if ( r != 0 ) g << r ;
    x = r % k ;
    for ( i = 1 ; i <= n ; i++ )
    {
         g << 9 ;
         x = ( x * 10 + 9 ) % k ;
    }
    for ( i = 1 ; i <= m ; i++ )
    {
         g << a ;
         x = ( x * 1000000000 + a ) % k ;
    }
    g << "\n" ;
    g << x ;
    return 0;
}
```

## Resurse

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