Plataforma: URI (BEECROWD)
Problema: 2166
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; }