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.