Problema
Dado um número inteiro positivo N, calcule S = 1! + 2! + 3! + ... + N!.
Formato de Entrada
A entrada consiste em um número inteiro positivo N não superior a 10.
Formato de Saída
Exiba o valor de S em uma única linha.
Exemplo de Entrada
3
Exemplo de Saída
9
Implemetnações em Diferentes Linguagens
1. Versão em C++
#include <iostream>
using namespace std;
int main() {
int numero;
int total = 0;
int fatorial = 1;
cin >> numero;
for (int contador = 1; contador <= numero; contador++) {
fatorial = fatorial * contador;
total = total + fatorial;
}
cout << total;
return 0;
}
2. Versão em C#
using System;
class CalculoFatorial {
static void Main() {
int limite = Convert.ToInt32(Console.ReadLine());
int resultado = 0;
int fatorialAtual = 1;
for (int i = 1; i <= limite; i++) {
fatorialAtual *= i;
resultado += fatorialAtual;
}
Console.WriteLine(resultado);
}
}
3. Versão em Java
import java.util.Scanner;
public class SomaFatoriais {
public static void main(String[] args) {
Scanner leitor = new Scanner(System.in);
int numero = leitor.nextInt();
leitor.close();
int soma = 0;
int fatorial = 1;
for (int i = 1; i <= numero; i++) {
fatorial = fatorial * i;
soma = soma + fatorial;
}
System.out.println(soma);
}
}
4. Versão em Python
numero = int(input())
soma_total = 0
produto_fatorial = 1
for valor in range(1, numero + 1):
produto_fatorial = produto_fatorial * valor
soma_total = soma_total + produto_fatorial
print(soma_total)
Explicação do Algoritmo
O algoritmo calcula a soma dos fatoriais de 1 até N de forma iterativa. Inicializa-se uma variável para armazenar o fatorial atual (iniciando em 1) e outra para acumular a soma total. Em cada iteração do loop, multiplica-se o fatorial atual pelo índice atual para obter o próximo fatorial, e adiciona-se esse valer ao acumulador total.
Para N=3, o cálculo seria:
- Iteração 1: fatorial = 1 × 1 = 1, soma = 0 + 1 = 1
- Iteração 2: fatorial = 1 × 2 = 2, soma = 1 + 2 = 3
- Iteração 3: fatorial = 2 × 3 = 6, soma = 3 + 6 = 9
Esta abordagem evita o recálculo completo de cada fatorial a partir do início, aproveitando o resultado do fatorial anterior para calcualr o próximo de forma eficiente.