Problema: 1161
Enunciado:
Leia dois valores inteiros M e N indefinidamente. A cada leitura, calcule e escreva a soma dos fatoriais de cada um dos valores lidos. Utilize uma variável apropriada, pois cálculo pode resultar em um valor com mais de 15 dígitos.
Linguagem: C++
Foi feito um vetor vet (long long por causa do tamanho do fatorial) em que foi colocado o valor do fatorial na respectiva posição. Conforme m e n foram lidos, foi verificado se já foi calculado o valor do fatorial para aquele número. Caso não tenha sido calculado, ele será calculado até chegar naquela posição. Então, vet será acessado nas posições m e n, e então seus fatoriais serão somados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> using namespace std; int main(){ int m,n; long long vet[21]; long long sum; vet[0] = 1; vet[1] = 1; int computed = 1; while(cin >> m >> n){ while(m > computed or n > computed){ vet[computed+1] = vet[computed]*(computed+1); computed++; } sum = vet[m] + vet[n]; cout << sum << endl; } return 0; } |
Nenhum comentário:
Postar um comentário