द अल्टरनेटिंग हार्मोनिक सीरीज एक प्रसिद्ध अभिसरण श्रृंखला है।
"स्पष्ट रूप से", यह स्पष्ट है कि यह 2 के प्राकृतिक लॉग में परिवर्तित होता है। या करता है?
चूंकि श्रृंखला पूरी तरह से अभिसरण नहीं है , बस शब्दों को फिर से व्यवस्थित करके, मैं इसे कुछ भी बना सकता हूं जो मैं चाहता हूं। मान लीजिए कि मैं चाहता हूं कि श्रृंखला ई से अभिसरित हो । मुझे बस इतना ही करना है:
यदि आप पैटर्न नहीं पकड़ते हैं, तो कोई स्पष्ट नहीं है। यहां देखिए यह कैसे काम करता है:
- सकारात्मक और नकारात्मक शब्दों के संदर्भ में वैकल्पिक हार्मोनिक श्रृंखला की शर्तों पर विचार करें।
- हमारे लक्ष्य (ई) को पार करने के लिए बस पर्याप्त सकारात्मक शब्द जोड़ें। (उर्फ
sum > target
) - अगला नकारात्मक शब्द घटाएं।
- 2 पर वापस जाएं।
ध्यान दें कि चरण 2 में, यदि हमारे sum == target
, आपको एक और सकारात्मक शब्द जोड़ना चाहिए।
इससे हम प्रत्येक संख्या से जुड़े अनुक्रम को इस प्रकार परिभाषित कर सकते हैं:
- ऊपर एल्गोरिथ्म का पालन करें
- प्रत्येक सकारात्मक शब्द के लिए, आउटपुट 1।
- प्रत्येक नकारात्मक शब्द के लिए, आउटपुट 0।
आइए इस क्रम को एक नंबर का "हार्मोनल बिट पैटर्न" कहते हैं। उदाहरण के लिए, e का HBP निम्नानुसार शुरू होता है:
1, 1, 1, 1, <32 times>, 0, 1, 1, <54 times>, 0, 1, 1, ...
आपकी चुनौती:
आपको दिया जाएगा:
- रेंज में एक तर्कसंगत इनपुट लक्ष्य [-10, 10] (नोट: हार्मोनिक श्रृंखला के माध्यम से 10 तक पहुंचने पर भी कई लाखों शब्द लगते हैं)। यह एक दशमलव (उर्फ
1.1
) हो सकता है या आप सीधे तर्कसंगत हो सकते हैं (उर्फ12/100
) - एक सकारात्मक
int
n इनपुट, आउटपुट के लिए सामंजस्यपूर्ण बिट पैटर्न की शर्तों की संख्या निर्दिष्ट करता है।
आपसे लक्ष्य की सटीक सामंजस्यपूर्ण बिट पैटर्न को निर्दिष्ट संख्या में आउटपुट करने की उम्मीद की जाती है । आप अंतरिक्ष अलग मूल्यों, अल्पविराम अलग, कोई जुदाई, आदि का उत्पादन कर सकते हैं; जब तक 0s और 1s का पैटर्न स्पष्ट रूप से दिखाई देता है और लगातार अलगाव के साथ बाएं से दाएं पढ़ा जाता है।
परीक्षण के मामलों
>>> 0, 1
1
>>> 0, 2
10
>>> 0, 7
1000010
>>> 1, 10
1101011011
>>> 1.01, 3
110
>>> 1.01, 24
110101101101101101101101
>>> 2.71, 32
11111111111111111111111111111111
>>> 2.71, 144
111111111111111111111111111111110111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111
>>> -9.8, 100
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
ध्यान दें कि चूंकि -9.8
यह बहुत बड़ा है, पहला 1
जो आउटपुट होगा वह 149496620
वें टर्म के आसपास है (जो कि फ्लोट के माध्यम से गणना की गई थी, इसलिए मान सटीक नहीं हो सकता है)।
h a p q
बजाय परिभाषित करनाh p q a
।