मान लीजिए कि हमारे पास दो इनपुट x और n हैं। x -100.0 से 100.0 की सीमा में एक संख्या है, और n एक 32-बिट हस्ताक्षरित पूर्णांक है। हमें पुस्तकालय कार्यों का उपयोग किए बिना x से घात n ज्ञात करना है।
इसलिए यदि दिए गए इनपुट x =12.1, n =-2 हैं, तो आउटपुट 0.00683
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- शक्ति :=|n| और रेस :=1.0
- जबकि पावर 0 नहीं है
- यदि अंतिम बिट शक्ति 1 है, तो res :=res * x
- x :=x * x
- अगर एन <0
- रिटर्न 1 / रेस
- रिटर्न रेस
उदाहरण (पायथन)
एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -
class Solution(object): def myPow(self, x, n): power = abs(n) res = 1.0 while power: if power & 1: res*=x x*=x power>>=1 if n<0: return 1/res return res ob1 = Solution() print(ob1.myPow(45, -2)) print(ob1.myPow(21, 3))
इनपुट
45 -2 21 3
आउटपुट
0.0004938271604938272 9261.0