20! = 2.432.902.008.176.640.000, ou seja, dois quintilhões quatrocentos e trinta e dois quatrilhões novecentos e dois trilhões oito bilhões cento e setenta e seis milhões seiscentos e quarenta mil.
Descrição
Solução
Os números fatoriais são grandes demais para caber em variáveis inteiras de 32 bits, que só conseguem representar até o número 2^32 - 1 = 4.294.967.295 (que, não se preocupe, não vou escrever em extenso aqui). Com isso, precisamos estender a representação do número com um long long, acrescentando mais 32 bits para a representação para 2^64 - 1 = 18.446.744.073.709.551.615, que é um número maior que 20!, o que cabe no nosso rol de resultados (com o maior resultado dentro 20! vezes 2). Para JavaScript, use BigInt() em vez dos números normais.
Você pode calcular cada fatorial usando o método recursivo normalmente, mas memorizar o resultado de valores previamente calculados vai te economizar bastante tempo de execução, podendo inclusive optar por implementar a função e colocar o comando Fatorial(20) para calcular previamente todos os casos possíveis antes de receber qualquer entrada.
F = [0for _ inrange(21)]F[0]=1defFatorial(n):if(F[n]==0): F[n]= n *Fatorial(n -1)return F[n]whileTrue:try: M, N = [int(x)for x ininput().strip().split(' ')]print(Fatorial(M) +Fatorial(N))exceptEOFError:break