Possibly, the “good algorithm” you’ve found to solve the Small-Factorials problem, involves some grade-school mathematics, and, it has the “bad” characteristic that its running time is quadratic, as it needs to iterate over both numbers in order to get the result correct.
An amazing idea to multiply big numbers “fast”, is the idea of using what is usually known as “the most important numerical algorithm” of our lifetime, and that is, the FFT algorithm.
The mathematics behind it, is, by far, the most beautiful thing I’ve ever seen in my life and, when I have all the time and knowledge I will for sure write a tutorial about this!
In the meantime, maybe you can use google translate, to try and understand this tutorial
If it’s not mandatory to use arrays , then you can try using BigInteger in java(May be u won’t get TLE with that).and that will save you from writing complex algorithms.