• 1
    Entrada e saída
    • Tarefas
  • 2
    Condições
    • Tarefas
  • 3
    Loop for
    • Tarefas
  • 4
    Strings
    • Tarefas
  • 5
    Loop while
    • Tarefas
  • 6
    Listas
    • Tarefas
  • 7
    Matrizes 2D
    • Tarefas
  • 8
    Dicionários
    • Tarefas
  • 9
    Conjuntos
    • Tarefas
  • 10
    Funções e recursão
    • Tarefas
  • к

Lição 5. While cycle

Dificuldade:

Tarefa«Leonardo Pizan»

💻 Python

O grande matemático Leonardo Pizan, conhecido sob o pseudônimo Fibonacci, nos deixou a famosa sequência numérica. Cada um de seus elementos, a partir do terceiro, é a soma dos dois anteriores.

rn

A sequência de Fibonacci é determinada da seguinte forma:
& Phi; ₀ = 0
& Phi; ₁ = 1
& Phi; ₙ = & Phi; ₙ₋₁ + & Phi; ₙ₋₂ para n & gt; 1

rn

O início da sequência é assim: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

rn

Você recebe um número natural A. Sua tarefa & mdash; é determinar se este número faz parte da sequência de Fibonacci. Se sim, então exiba seu número de série N (índice), tal que & Phi; n = A. Se o número 1 ocorrer na sequência, considere que seu índice é 1. Se o número A não for um número de Fibonacci, exiba -1.

Formato de entrada

O número é introduzido por um número inteiro não negativo a (0 ≤ a ≤ 10¹⁸).

Formato de saída

Traga um número inteiro: número de série N para o qual & Phi; n = A. Se tal número não existir, retorne -1.

Exemplo

Entrada

55

Saída

10

Dica

There will be no clue here, decide for yourself!

main.py
Teste 1
Teste 2
Teste 3
Teste 4
Teste 5
Teste 6
Teste 7
Teste 8
Teste 9
Teste 10
Solução do desenvolvedor
# Получаем на вход число A
a = int(input())

# Обрабатываем частный случай для 0
if a == 0:
    print(0)
else:
    # Инициализируем первые два члена последовательности и их индекс n.
    # f0 соответствует φ(n-1), f1 соответствует φ(n)
    f0, f1 = 0, 1
    n = 1
    
    # Используем цикл while для генерации чисел Фибоначчи,
    # пока текущее число f1 меньше искомого числа a.
    while f1 < a:
        # Это "магия" Python для параллельного присваивания.
        # Новое значение f0 становится старым f1,
        # а новое f1 становится суммой старых f0 и f1.
        # Это эквивалентно:
        # temp = f1
        # f1 = f0 + f1
        # f0 = temp
        f0, f1 = f1, f0 + f1
        n += 1
        
    # После выхода из цикла проверяем, почему он завершился.
    # Если f1 равно a, значит, мы нашли число.
    if f1 == a:
        print(n)
    # Если f1 стало больше a, значит, мы "проскочили" искомое число,
    # и его нет в последовательности.
    else:
        print(-1)

🎉 Parabéns! 🎉

Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.

AD

Publicidade

red-snake blue-snake green-snake

Executando seu código...

Assistente de IA

Olá! Sou seu assistente de programação. Faça qualquer pergunta sobre Python — posso explicar funções, métodos e ajudá-lo com a tarefa atual!