🎉 تهانينا! 🎉
لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.
ProgerLib Python للجميع
تغيير السمة
عالم الرياضيات العظيم ليوناردو بيزانو، المعروف باسم فيبوناتشي، ترك لنا المتتالية العددية الشهيرة. كل عنصر من عناصرها، بدءًا من الثالث، هو مجموع العنصرين السابقين.
rn يتم تعريف متتالية فيبوناتشي على النحو التالي:
Φ₀ = 0
Φ₁ = 1
Φₙ = Φₙ₋₁ + Φₙ₋₂ من أجل n > 1
بداية المتتالية تبدو هكذا: 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
# Получаем на вход число 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
إعلان
جارٍ تشغيل الكود...