Pesquisar este blog

Livros Recomendados

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

sexta-feira, 5 de março de 2021

URI (BEECROWD) - 2166 - Raiz Quadrada de 2 - Iniciante - C e C++

Plataforma: URI (BEECROWD)

Problema2166

Enunciado:

Uma das formas de calcular a raiz quadrada de um número natural é pelo método das frações periódicas continuadas. Esse método usa como denominador uma repetição de frações. Essa repetição pode ser feita uma quantidade específica de vezes.

Por exemplo, ao repetir 2 vezes a fração continuada para calcular a raiz quadrada de 2, temos a fórmula abaixo (ver fórmula na especificação original do problema).

Sua tarefa é, dado o número N de repetições, calcular o valor aproximado da raiz quadrada de 2.

Linguagens: C e C++


Solução:

Para este problema, basta seguir a fórmula indicada. Para fins de organização e modularização de código, aqui criou-se uma função raiz para realizar o cálculo. Ao valor obtido pela função, basta somar 1, como pede a fórmula do problema.

No printf, utilize %.10lf para formatar o valor com dez casas decimais.

Código em C:

#include <stdio.h>

double raiz(int n) {
    
    if (n == 0) return 0;
    return 1 / (2 + raiz(n - 1));
    
}

int main() {
    
    int n;
    double resposta = 1.0, contador = 1, termo = 1/2;
    
    scanf("%i", &n);    
    printf("%.10lf\n", 1 + raiz(n));

    return 0;
}

Código em C++:

Para fixar a quantidade de casas decimais em 10, utilizou-se setprecision com o valor 10. Esta função está disponível na biblioteca iomanip, por isso é necessário incluí-la (ver a segunda linha do código).

Lembre-se de que os comandos podem vir precedidos de "std::" caso não se use o namespace (instrução "using namespace std;").

#include <iostream>
#include <iomanip>

double raiz(int n) {
    
    if (n == 0) return 0;
    return 1 / (2 + raiz(n - 1));
    
}

int main() {
    
    int n;
    
    std::cin >> n;
    std::cout << std::fixed << std::setprecision(10) << 1 + raiz(n) << std::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