Este problema é do projecteuler, e creio que deve envolver programação dinâmica, que por ser um conceito que eu não domino nem de perto (mas que gostava de aprender), decidi colocá-lo aqui:
Seja

a função que para cada N que recebe, retorna os últimos 5 dígitos antes dos "trailing zeroes" em

(os trailing zeroes, são a enorme sequência de zeros que existe a partir de determinada altura em

e que vai até ao fim do número.)
Por exemplo:

Então:

O objectivo é calcular f(1,000,000,000,000)
PS: A única coisa que consegui fazer foi calcular o número de 0s em 1,000,000,000,000!. Existem 249999999997 zeros seguidos.
