फाइबोनैचि अनुक्रम एक दृश्य अच्छी तरह से पता है, जिसमें प्रत्येक प्रविष्टि पिछले दो और पहले दो प्रविष्टियों का योग है कर रहे हैं 1. हम एक निरंतर अनुक्रम समय-समय पर हो जाएगा द्वारा प्रत्येक शब्द के सापेक्ष लेते हैं है। उदाहरण के लिए यदि हमने अनुक्रम mod 7 की गणना करने का निर्णय लिया तो हमें निम्नलिखित मिलेगा:
1 1 2 3 5 1 6 0 6 6 5 4 2 6 1 0 1 1 ...
इसकी अवधि 16 है। एक संबंधित अनुक्रम, जिसे पिसानो अनुक्रम कहा जाता है , को इस तरह परिभाषित किया गया है कि a(n)
जब माड्यूलो एन की गणना की जाती है, तो यह दृश्य अनुक्रम की अवधि होती है।
कार्य
आपको एक प्रोग्राम या फ़ंक्शन लिखना चाहिए जो दिए n
जाने पर फाइबोनैचि अनुक्रम मॉड की अवधि की गणना और आउटपुट करेगा n
। पिस्सनो अनुक्रम में यह नौवां शब्द है।
आपको रेंज पर केवल पूर्णांकों का समर्थन करना चाहिए 0 < n < 2^30
यह एक कोड-गोल्फ प्रतियोगिता है, इसलिए आपको अपने स्रोत कोड के आकार को बाइट्स के अनुसार कम से कम करना चाहिए।
परीक्षण के मामलों
1 -> 1
2 -> 3
3 -> 8
4 -> 6
5 -> 20
6 -> 24
7 -> 16
8 -> 12
9 -> 24
10 -> 60
11 -> 10
12 -> 24
f(i),f(i+1)
अधिकांश n^2
मूल्यों पर ले जा सकते हैं आधुनिक n
। इस प्रकार, n
सीमित 2^30
अवधि तक उत्पादन कर सकता है 2^60
। प्रतिबन्ध n <= 2^16
देना होगा P(n) <= 2^32
।
f(i+2) = f(i+1)+f(i)
, इसलिए अवधि से अधिक मशीन लूपिंग की 'स्थिति' को पूर्णांक मॉड की एक जोड़ी के साथ वर्णित किया जा सकता है n
। अधिकांश n^2
राज्यों में हैं, इसलिए अवधि सबसे अधिक है n^2
। ओह! विकिपीडिया का दावा है कि यह अवधि सबसे अधिक है 6n
। मेरी तुच्छता को कभी नहीं।