Pesquisar este blog

Livros Recomendados

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

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

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