• 1
    إدخال وإخراج البيانات
    • المهام
  • 2
    الشروط
    • المهام
  • 3
    حلقة for
    • المهام
  • 4
    السلاسل النصية
    • المهام
  • 5
    حلقة while
    • المهام
  • 6
    القوائم
    • المهام
  • 7
    مصفوفات ثنائية الأبعاد
    • المهام
  • 8
    القواميس
    • المهام
  • 9
    المجموعات
    • المهام
  • 10
    الدوال والتكرار
    • المهام
  • к

درس 5. While cycle

الصعوبة:

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

مسألة«ليوناردو بيزانو»

💻 Python

عالم الرياضيات العظيم ليوناردو بيزانو، المعروف باسم فيبوناتشي، ترك لنا المتتالية العددية الشهيرة. كل عنصر من عناصرها، بدءًا من الثالث، هو مجموع العنصرين السابقين.

rn

يتم تعريف متتالية فيبوناتشي على النحو التالي:
Φ₀ = 0
Φ₁ = 1
Φₙ = Φₙ₋₁ + Φₙ₋₂ من أجل n > 1

rn

بداية المتتالية تبدو هكذا: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

rn

يُعطى لك عدد طبيعي A. مهمتك — هي تحديد ما إذا كان هذا العدد جزءًا من متتالية فيبوناتشي. إذا كان كذلك، فقم بإخراج رقمه التسلسلي N (الفهرس)، بحيث يكون Φₙ = A. إذا ظهر الرقم 1 في المتتالية، فاعتبر أن فهرسه هو 1. إذا كان العدد A ليس عدد فيبوناتشي، فقم بإخراج -1.

تنسيق الإدخال

يتم تقديم الرقم بواسطة عدد صحيح غير سالب a (0 & le; a & le; 10 & sup1; ⁸).

تنسيق الإخراج

أدخل رقمًا صحيحًا واحدًا: الرقم التسلسلي N الذي يكون Φ n = A. إذا لم يكن هذا الرقم موجودًا، أخرج -1.

مثال

إدخال

55

إخراج

10

تلميح

There will be no clue here, decide for yourself!

main.py
اختبار 1
اختبار 2
اختبار 3
اختبار 4
اختبار 5
اختبار 6
اختبار 7
اختبار 8
اختبار 9
اختبار 10
حل المطور
# Получаем на вход число 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)

🎉 تهانينا! 🎉

لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.

AD

إعلان

red-snake blue-snake green-snake

جارٍ تشغيل الكود...

مساعد الذكاء الاصطناعي

مرحباً! أنا مساعدك في البرمجة. اسألني أي شيء عن Python — يمكنني شرح الدوال والطرق ومساعدتك في المهمة الحالية!