Informatică, întrebare adresată de Ouroboros, 9 ani în urmă

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.

Răspunsuri la întrebare

Răspuns de express
1
int det(int m)
{
    int p = 1, i = 1, ant;
    if(m == 1) return 1;
    if(m == 0) return 1;
    while(p <= m)
    {
        p = p * i;
        i++;
    }
    ant = p / (i-1);
    if(p - m < m - ant) return p;
      else if(p - m == m - ant) return ant;
         else return ant;
}

Alte întrebări interesante