Pesquisar este blog

Livros Recomendados

domingo, 28 de fevereiro de 2021

URI (BEECROWD) - 2028 - Sequência de Sequência - Iniciante - C e C++

Sequência de Sequência resolvido e divulgado aqui para vocês!

Plataforma: URI (BEECROWD)

Problema2028

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;
}

Código em C++:

#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;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas