Für einen Computer ist das kein Problem. Anbei ein C++-Code-Schnipsel:
    auto erg = int64_t(1);
    for( int i= 177778; i>1; --i )
        (erg *= i) %= 123477767;
    cout << erg << endl;
liefert in <1s den Wert 23358699. Der 'Trick' besteht halt darin, die Modulo-Funktion nach jeder Multiplikation aufzurufen.