Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 2028. Mostrar todas as postagens
Mostrando postagens com marcador 2028. Mostrar todas as postagens

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

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