# PBinfo #902 – Factorial2 – Rezolvare C++

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

## Enunț

Cerinţa
Să se scrie o funcție C++, cu un parametru, n, care returnează cel mai apropiat număr de n care este factorialul unei valori. 

Restricţii şi precizări

numele funcției va fi det
funcția va avea un singur parametru, n
0 ≤ n ≤ 10.000.000
dacă există mai multe numere care sunt factoriale ale unor valori și sunt la fel de apropiate de n, funcția îl va returna pe cel mai mic

Exemplu
det(24) = 24, det(44) = 24, det(100) = 120, det(72)=24

Important
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

## Cod sursă C++

```cpp
int det(int n) {
    int p = 1, k = 1;
    while (p < n)
        k++, p = p * k;
    if (p == n) return p;
    int t = p / k;
    if (n - t <= p - n)
        return t;
    else return p;
}
```

## Resurse

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