Escreva um código que use um número inteiro não negativo n e produza a enésima potência de Phi (ϕ, a proporção áurea, aproximadamente 1,61803398874989) com o mesmo número de dígitos decimais que o enésimo número de Fibonacci.
Seu código deve produzir a sequência correta de dígitos para todas as entradas com no mínimo 10 (55 dígitos decimais). A saída deve ser decimal legível por humanos. Você pode optar por arredondar o último dígito para o valor mais próximo ou truncar o valor. Especifique qual o seu código usa.
n e saída, até 10, arredondando para baixo:
0 1
1 1.6
2 2.6
3 4.23
4 6.854
5 11.09016
6 17.94427190
7 29.0344418537486
8 46.978713763747791812296
9 76.0131556174964248389559523684316960
10 122.9918693812442166512522758901100964746170048893169574174
n e saída, até 10, arredondando para o valor mais próximo:
0 1
1 1.6
2 2.6
3 4.24
4 6.854
5 11.09017
6 17.94427191
7 29.0344418537486
8 46.978713763747791812296
9 76.0131556174964248389559523684316960
10 122.9918693812442166512522758901100964746170048893169574174
O sétimo número de Fibonacci é 13; portanto, a saída para n = 7, ϕ 7 tem 13 casas decimais. Você não deve truncar zeros à direita que exibam poucos dígitos; veja a saída 6 na primeira tabela, que termina em um único zero para manter a precisão decimal em 8 dígitos.
Talvez como um bônus, diga qual é o número mais alto que seu programa pode gerar corretamente.
Respostas:
dc, 26 bytes
Devido à precisão inicial de 99 dígitos após a vírgula, isso funcionará na entrada 11 . Uma precisão dinâmica (ou estática mais alta) é possível, mas elevaria a contagem de bytes.
Casos de teste
Como funciona
Como a saída desejada é φ n , podemos calcular o número de Fibonacci F (n) como ⌊φ n ÷ √5 + 0,5⌋ com pouco esforço adicional.
fonte
Mathematica, 50 bytes
Solução básica. Arredonda para o valor mais próximo.
Ainda verificando o valor mais alto que não fará com que meu computador fique sem memória.A entrada32
funciona, mas leva 45 minutos e usa 16GiB de RAM. No entanto, dado tempo e memória infinitos, isso poderia, teoricamente, ser executado por qualquer valor.fonte