Pesquisar este blog

Livros Recomendados

terça-feira, 23 de março de 2021

URI (BEECROWD) - 2986 - Nem Tudo é Greve Versão Hard - Matemática - C e C++

Novo post! Dessa vez resolvendo um exercício matemático do BEECROWD. Veja abaixo as soluções em C e C++ para o exercício "Nem Tudo é Greve Versão Hard".


Plataforma: URI (BEECROWD)
Problema2986


Linguagens: C e C++


Solução: Como nesse exercício o resultado pode ser muito grande, utilizei o tipo long long, que usa no mínimo 64 bits. Com base no que pede o enunciado, preenchi um array como se fosse uma tabela (fiz uma espécie de memoização) que baseia o valor no resto da divisão do primo favorito (10^9 + 7) pela soma dos três valores anteriores na tabela, valores estes que já são conhecidos, pois já foram preenchidos. No início os três valores valem 1, 1 e 2, respectivamente. Após preencher a tabela até a posição n, basta acessar o valor com índice n no array.

Código em C

#include <stdio.h>
#define PRIMO 1000000007

int main() {
    
    int n, i;
    scanf("%d", &n);
    
    long long r[n + 1];
    r[0] = 1;
    r[1] = 1;
    r[2] = 2;
    for (i = 3; i <= n; i++)
        r[i] = (r[i-1] + r[i-2] + r[i-3]) % PRIMO;
        
    printf("%llu\n", r[n]);
    
    return 0;
}

Código em C++:

#include <iostream>

#define PRIMO 1000000007

using namespace std;

int main() {
    
    int n;
    cin >> n;
    
    long long r[n + 1];
    r[0] = 1;
    r[1] = 1;
    r[2] = 2;
    for (int i = 3; i <= n; i++)
        r[i] = (r[i-1] + r[i-2] + r[i-3]) % PRIMO;
        
    cout << r[n] << 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