• 1
    Entrada y salida de datos
    • Tareas
  • 2
    Condiciones
    • Tareas
  • 3
    Bucle for
    • Tareas
  • 4
    Cadenas de texto
    • Tareas
  • 5
    Bucle while
    • Tareas
  • 6
    Listas
    • Tareas
  • 7
    Matrices 2D
    • Tareas
  • 8
    Diccionarios
    • Tareas
  • 9
    Conjuntos
    • Tareas
  • 10
    Funciones y recursión
    • Tareas
  • к

Lección 5. While cycle

Dificultad:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Tarea«Leonardo de Pisa»

💻 Python

El gran matemático Leonardo Pisano, conocido bajo el seudónimo de Fibonacci, nos legó la famosa secuencia numérica. Cada uno de sus elementos, a partir del tercero, es la suma de los dos anteriores.

rn

La secuencia de Fibonacci se determina de la siguiente manera:
& Phi; ₀ = 0
& Phi; ₁ = 1
& Phi; ₙ = & Phi; ₙ₋₁ + & Phi; ₙ₋₂ para n & gt; 1

rn

El inicio de la secuencia se ve así: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

rn

Se te da un número natural A. Tu tarea & mdash; Determinar si este número es parte de la secuencia de Fibonacci. Si es así, entonces muestra su número de serie N (índice), tal que & Phi; n = A. Si el número 1 aparece en la secuencia, asume que su índice es 1. Si el número A no es un número de Fibonacci, muestra -1.

Formato de entrada

Se introduce un número entero no negativo a (0 ≤ a ≤ 10¹⁸).

Formato de salida

Ingrese un número entero: el número de serie N para el cual & Phi; n = A. Si dicho número no existe, devuelva -1.

Ejemplo

Entrada

55

Salida

10

Pista

There will be no clue here, decide for yourself!

main.py
Prueba 1
Prueba 2
Prueba 3
Prueba 4
Prueba 5
Prueba 6
Prueba 7
Prueba 8
Prueba 9
Prueba 10
Solución del desarrollador
# Получаем на вход число 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)

🎉 ¡Felicidades! 🎉

¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.

AD

Publicidad

red-snake blue-snake green-snake

Ejecutando tu código...

Asistente de IA

¡Hola! Soy tu asistente de programación. Hazme cualquier pregunta sobre Python — puedo explicarte funciones, métodos y ayudarte con la tarea actual.