Sequência de Sequência resolvido e divulgado aqui para vocês!
Plataforma: URI (BEECROWD)
Problema: 2028
Enunciado:
Hyam é um menino que adora sequências. Ele anda descobrindo sequências interessantes que nem mesmo Fibonacci imaginaria. Certo dia, Hyam percebeu que dado um número N, ele poderia fazer uma sequência do tipo 0 1 2 2 3 3 3 4 4 4 4 ... N N N ... N. No entanto, Hyam percebeu que cada valor que aumentava no número da sequência, a quantidade total de números da sequência aumentava semelhantemente à um crescimento fatorial, neste caso, ao invés de multiplicar, soma-se o número total de números da sequência com o valor do próximo número da sequência. Por exemplo, se N = 2. A sequência correta seria 0 1 2 2, obtendo-se 4 digitos. Agora, se N = 3, o próximo número da sequência tem valor 3, então a quantidade total de número da sequência seria a quantidade de números com N = 2, que é 4, mais o valor do próximo número da sequência, neste caso 3, obtendo-se 7, já que a sequência correta para N = 3 é 0 1 2 2 3 3 3.
Sua tarefa é fazer um algoritmo que dado um número inteiro N, tenha como resposta a quantidade total de números dessa sequência e logo abaixo a sequência completa.
Linguagens: C e C++
Solução:
Em termos de lógica fiz duas soluções iguais, muda apenas o comando de escrita imprimindo só "s" pra facilitar. Mas ambos estão certos.
Código em C:
#include <stdio.h> int main() { int n, total, caso = 1; while (scanf("%i",&n)!=EOF) { total = 1; int numeros = n; while (numeros > 0) total += numeros--; printf("Caso %i: %i numero", caso++, total); if (n) printf("s"); printf("\n0"); int contadorInterno; while (++numeros <= n) { contadorInterno = numeros; while (contadorInterno-- > 0) printf(" %i", numeros); } printf("\n\n"); } return 0; }
#include <iostream> using namespace std; int main() { int n, total, caso = 1; while (cin >> n) { total = 1; int numeros = n; while (numeros > 0) total += numeros--; if (n == 0) cout << "Caso " << caso++ << ": " << total << " numero" << endl; else cout << "Caso " << caso++ << ": " << total << " numeros" << endl; cout << "0"; int contadorInterno; while (++numeros <= n) { contadorInterno = numeros; while (contadorInterno-- > 0) cout << " " << numeros; } cout << endl << endl; } return 0; }