मैं पाउ (ए, बी)% एमओडी के मूल्य की गणना के लिए कोड करना चाहता हूं। मैं कोड में सी ++ का उपयोग करता हूं।गणना (ए^बी)% एमओडी
लेकिन समस्या यह है कि बी का मूल्य बहुत बड़ा हो सकता है। मुझे लॉग (बी) समय जटिलता विधि पता है। लेकिन, बी का मान डेटा प्रकार में फिट नहीं हो सकता है जो सी ++ के "लंबे समय तक" है। उदाहरण के लिए बी 1000000000 वें फाइबोनैकी संख्या हो सकती है। इतनी बड़ी संख्या की सटीक गणना स्वयं ही संभव नहीं है (समय सीमा में)।
पीएस :
- पाउ (ए, बी) का मतलब है * ए * ए * ए * ... बी टाइम्स।
- एक्स% एमओडी का मतलब एमओडी द्वारा एक्स को विभाजित करने पर प्राप्त शेष है।
संभवतः डुप्लिकेट [सी ++ में मनमाना लंबाई पूर्णांक को संभालें] (http://stackoverflow.com/questions/8146938/handle-arbitrary-length-integers-in-c) –
केवल स्पष्टीकरण के लिए, सी ++ '^' में है एक्सओआर ओपेराटो आर, एक एक्सपोनेंट ऑपरेटर नहीं (आप कुछ सुंदर परिणामों के साथ खत्म हो जाएंगे, पहले हाथ अनुभव)। मेरा मानना है कि आपको 'Math.exp (a, b) ' – nbrooks
@nbrooks का उपयोग करना होगा: जबकि आप निश्चित रूप से सही हैं कि C++ XOR का अर्थ'^'का उपयोग करता है,' Math.exp (a, b) 'नहीं दिखता है जैसे सी ++ (और नाम के आधार पर, मैं उम्मीद करता हूं कि यह घातीय गणना करे, एक शक्ति को संख्या न बढ़ाएं)। –