• 1
    Entrée et sortie
    • Tâches
  • 2
    Conditions
    • Tâches
  • 3
    Boucle for
    • Tâches
  • 4
    Chaînes
    • Tâches
  • 5
    Boucle while
    • Tâches
  • 6
    Listes
    • Tâches
  • 7
    Tableaux 2D
    • Tâches
  • 8
    Dictionnaires
    • Tâches
  • 9
    Ensembles
    • Tâches
  • 10
    Fonctions et récursion
    • Tâches
  • к

Leçon 5. While cycle

Difficulté :

Exercice«Leonardo Pizan»

💻 Python

Le grand mathématicien Léonard de Pise, connu sous le pseudonyme de Fibonacci, nous a laissé la célèbre suite numérique. Chacun de ses éléments, à partir du troisième, est la somme des deux précédents.

La suite de Fibonacci est définie comme suit :
Φ₀ = 0
Φ₁ = 1
Φₙ = Φₙ₋₁ + Φₙ₋₂ pour n > 1

Le début de la suite ressemble à ceci : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

On vous donne un nombre naturel A. Votre tâche — déterminer si ce nombre fait partie de la suite de Fibonacci. Si oui, affichez son numéro de série N (indice), tel que Φₙ = A. Si le nombre 1 apparaît dans la suite, considérez que son indice est 1. Si le nombre A n'est pas un nombre de Fibonacci, affichez -1.

Format d entrée

Le nombre est introduit par un entier non négatif a (0 ≤ a ≤ 10¹⁸).

Format de sortie

Saisissez un nombre entier : le numéro de série N pour lequel & Phi; n = A. Si un tel nombre n'existe pas, affichez -1.

Exemple

Entrée

55

Sortie

10

Indice

There will be no clue here, decide for yourself!

main.py
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
Test 7
Test 8
Test 9
Test 10
Solution du développeur
# Получаем на вход число 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)

🎉 Félicitations ! 🎉

Tu as brillamment résolu la tâche ! C était difficile, mais tu as trouvé la bonne solution. Tu es encore plus proche de maîtriser la programmation ! Continue ainsi.

AD

Publicité

red-snake blue-snake green-snake

Exécution de votre code...

Assistant IA

Bonjour ! Je suis ton assistant de programmation. Pose moi toutes tes questions sur Python — je peux t expliquer les fonctions, les méthodes et t aider avec la tâche en cours !