"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > बड़े घातांक के साथ (a^b)%MOD की कुशलतापूर्वक गणना कैसे करें?

बड़े घातांक के साथ (a^b)%MOD की कुशलतापूर्वक गणना कैसे करें?

2024-11-12 को प्रकाशित
ब्राउज़ करें:618

How to Efficiently Calculate (a^b)%MOD with Large Exponents?

बड़े घातांक के साथ (a^b)%MOD की गणना करना

इस कोडिंग चुनौती में, कार्य पाउ के मूल्य की गणना करना है( a, b)%MOD, जहां घातांक b अत्यंत बड़ा हो सकता है। जबकि पारंपरिक लॉग (बी) समय जटिलता विधि छोटे मानों के लिए उपयुक्त है, यह तब अव्यावहारिक हो जाती है जब बी सी में लंबे लंबे डेटा प्रकारों की क्षमता से अधिक हो जाता है।

हालांकि, एक अधिक कुशल दृष्टिकोण में यूलर के टोटिएंट फ़ंक्शन का लाभ उठाना शामिल है, φ(एमओडी)। यूलर का प्रमेय बताता है कि a^φ(MOD)≡1(mod MOD)। इसका मतलब यह है कि a की शक्ति को काफी हद तक घटाकर a^(b % φ(MOD)) किया जा सकता है।

φ(MOD) की गणना करना अपने आप में एक गैर-तुच्छ कार्य है, लेकिन पूर्णांक गुणनखंडन विधियों का उपयोग करके इसे प्राप्त किया जा सकता है। . एक बार गणना करने के बाद, गणना समय को नाटकीय रूप से कम करने के लिए घातांक b को b % φ(MOD) से बदला जा सकता है। (बी) 1 से बी तक के आई के लिए जीसीडी(बी, आई) के असतत फूरियर रूपांतरण से प्राप्त किया जा सकता है। यह स्पष्ट गुणनखंडन की आवश्यकता को समाप्त करता है।

इसके अतिरिक्त, कारमाइकल के फ़ंक्शन, λ(MOD), का उपयोग सही उत्तर प्राप्त करने के लिए किया जा सकता है, खासकर जब a और MOD सामान्य कारक साझा करते हैं।

कोड कार्यान्वयन

निम्नलिखित कोड स्निपेट C में एक उदाहरण के रूप में कार्य करता है:

#include #शामिल नेमस्पेस एसटीडी का उपयोग करना; टाइपडिफ़ लॉन्ग लॉन्ग ll; ll gcd(ll a, ll b) { return (b == 0) ? ए : जीसीडी(बी, ए % बी); } ll pmod(ll a, ll b, ll mod) { यदि (बी == 0) वापसी 1; यदि (बी % 2 == 1) { रिटर्न (ए * पीएमओडी (ए, बी - 1, मॉड)) % मॉड; } अन्य { ll tmp = pmod(ए, बी/2, मॉड); वापसी (टीएमपी * टीएमपी) % मॉड; } } मुख्य प्रवेश बिंदु() { डालूँगा ए, बी, मॉड; सीन >> ए >> बी >> मॉड; cout

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3