# PBinfo #4036 – kdivnn – Rezolvare C++

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

## Enunț

Cerința
Se dau n şi k numere naturale nenule. Determinaţi cel mai mare număr natural de cel mult k cifre care divide pe nn.

Date de intrare
Programul citește de la tastatură numerele n şi k.

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

Restricții și precizări

2 ≤ n ≤ 10.000.000
1 ≤ k ≤ 12

Exemplu:
Intrare

6 3
Ieșire

972
Explicație
Cel mai mare număr de trei cifre care divide pe 66 este 972.

## Cod sursă C++

```cpp
#include <iostream>
#define ll long long
using namespace std;
ll i,m,c,n,nn,k,maxim,nmax,x;
ll e[21],p[21];
void solve(int niv, ll nr)
{
    if(niv==m+1)
    {
        if(nr > maxim)
            maxim = nr;
    }
    else
    {
        int h;
        ll prod = 1, y;
        for(h = 0; h <= e[niv]; h++)
        {
            y = nr*prod;
            if(y < nmax)
            {
                solve(niv+1,y);
                prod = prod*p[niv];
            }
            else break;
        }
    }
}
int main()
{
    cin >> n >> k;
    nmax = 1;
    for(i = 1; i <= k; i++)
        nmax = nmax*10;
    nn = n;
    for(i = 2; i*i <= n; i++)
        if(n%i==0)
    {
        m++;
        p[m] = i;
        e[m] = 0;
        while(n%i==0)
        {
            e[m]++;
            n = n/i;
        }
    }
    if(n > 1)
    {
        m++;
        p[m] = n;
        e[m] = 1;
    }
    for(i = 1; i <= m; i++)
    {
        e[i] = e[i]*nn;
        x = 1;
        c = 0;
        while(x <= nmax)
        {
            x = x*p[i];
            c++;
        }
        if(c < e[i])
            e[i] = c;
    }
    maxim = 1;
    solve(1,1);
    cout << maxim;
    return 0;
}
```

## Resurse

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