मान लीजिए कि हमारे पास एक संख्या एन है, हमें सबसे बड़ा पूर्ण घन निर्धारित करना है जो कि संख्या से न्यूनतम अंक (संभवतः 0) को हटाकर उत्पन्न किया जा सकता है। लक्ष्य तक पहुंचने के लिए हम दी गई संख्या में से किसी भी अंक को हटा सकते हैं। जैसा कि हम जानते हैं कि एक संख्या N को एक पूर्ण घन कहा जाता है यदि किसी पूर्णांक M के लिए N =M^3 हो।
तो, अगर इनपुट 806 की तरह है, तो आउटपुट 8 होगा, क्योंकि हम संख्या से 0 और 6 को हटा सकते हैं, तो हमें 8 मिलेगा, यह 2 का पूर्ण घन है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन को परिभाषित करें preProcess() । इसमें n . लगेगा
- temp_cubes :=एक नई सूची
- i श्रेणी 1 से n^(1/3) की सीमा तक, do
- घन =i^3
- क्यूबस्ट्रिंग :=क्यूब एक स्ट्रिंग के रूप में
- temp_cubes के अंत में क्यूबस्ट्रिंग डालें
- temp_cubes लौटाएं
- एक फ़ंक्शन को हल करें() परिभाषित करें। इसमें num,temp_cubes लगेगा
- temp_cubes को उल्टा करें
- कुल घन :=temp_cubes का आकार
- मैं के लिए 0 से कुल क्यूब की श्रेणी में, करते हैं
- अस्थायी:=temp_cubes[i]
- digitsInCube :=अस्थायी आकार
- सूचकांक:=0
- अंकों की संख्या:=संख्या का आकार
- जे के लिए 0 से लेकर अंकों की संख्या तक, करें
- यदि num[j] temp[index] के समान है, तो
- सूचकांक :=अनुक्रमणिका + 1
- यदि डिजिटइनक्यूब इंडेक्स के समान है, तो
- वापसी का तापमान
- यदि num[j] temp[index] के समान है, तो
- वापसी "संभव नहीं"
- विधि से निम्न कार्य करें -
- temp_cubes :=पूर्वप्रक्रिया(n)
- संख्या:=n स्ट्रिंग के रूप में
- उत्तर:=हल करें (संख्या, temp_cubes)
- वापसी उत्तर
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
आयात करें ) temp_cubes.append(cubeString) वापसी temp_cubesdef हल (num,temp_cubes):temp_cubes =temp_cubes[::-1] totalCubes =len(temp_cubes) for i in range(totalCubes):temp =temp_cubes[i]digitInCube =len(temp ) अनुक्रमणिका =0 अंकइननंबर =लेन (संख्या) j के लिए श्रेणी में (अंकों की संख्या):अगर (संख्या [जे] ==अस्थायी [अनुक्रमणिका]):सूचकांक + =1 अगर (अंक इनक्यूब ==सूचकांक):वापसी अस्थायी वापसी "संभव नहीं है "def getLargestCube(n):temp_cubes =preProcess(n) num =str(n) ans =सॉल्व (num, temp_cubes) रिटर्न ansn =806print(getLargestCube(n))इनपुट
806
आउटपुट
8