Pesquisar este blog

Livros Recomendados

sábado, 20 de março de 2021

URI (BEECROWD) - 2846 - Fibonot - Iniciante - C e C++

Outra solução para um exercício do BEECROWD! O exercício Fibonot não é tão simples assim! Ao menos não no meu ponto de vista. Precisei pensar uns minutinhos até entender como fazer. Resolvi nas mesmas linguagens que costumo fazer, C e C++. Observe os códigos abaixo!

Plataforma: URI (BEECROWD)

Problema2846

Linguagens: C e C++


Solução:

Um dos pontos importantes nessa solução foi utilizar o tipo long long, pois o range de valores de n pode ser muito grande. Criei uma função isFibo para fazer os cálculos da questão e verificar se o valor faz parte da sequência. Se fizer, incrementa o valor de i.

Código em C:

#include <stdio.h>
#include <math.h>

int isFibo(long long n) {
    long long raiz1 = 5 * n * n + 4;
    long long raiz2 = 5 * n * n - 4;
    long long a = sqrt(raiz1);
    long long b = sqrt(raiz2);
    return a * a == raiz1 || b * b == raiz2;
}

int main() {
    long long n, i = 1, r = 0;
    while (scanf("%lld", &n) != EOF) {
        while (n >= i) {
            if (!isFibo(++r)) {
                i++;
            }
        }
        printf("%lld\n", r);
    }

    return 0;
}

Código em C++:

#include <iostream>
#include <cmath>

using namespace std;

bool isFibo(long long n) {
    long long raiz1 = 5 * n * n + 4;
    long long raiz2 = 5 * n * n - 4;
    long long a = sqrt(raiz1);
    long long b = sqrt(raiz2);
    return a * a == raiz1 || b * b == raiz2;
}

int main() {
    long long n, i = 1, r = 0;
    while (cin >> n) {
        while (n >= i) {
            if (!isFibo(++r)) {
                i++;
            }
        }
        cout << r << 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