इस समस्या में, हमें एक नंबर N दिया जाता है। हमारा काम C++ में 2^n के अंतिम दो अंक खोजने के लिए एक प्रोग्राम बनाना है।
समस्या का विवरण
अंतिम दो अंक खोजने के लिए। हम केवल अंतिम दो अंकों के उत्पाद का उपयोग करेंगे। और गणना को छोटा करने के लिए अन्य चीजों को छोड़ दें।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट :एन =12
आउटपुट :96
स्पष्टीकरण
2^12 =4096
समाधान दृष्टिकोण
समस्या को हल करने के लिए, एक सीधा तरीका यह हो सकता है कि 2^Nand का मान ज्ञात किया जाए और फिर शेषफल को 100 से विभाजित करने पर ज्ञात किया जाए।
उदाहरण
#include <iostream> using namespace std; int findLastDigit(int N){ int powerVal = 1; for(int i = 0; i < N; i++){ powerVal *= 2; } return powerVal%100; } int main() { int N = 14; cout<<"The last two digits of 2^"<<N<<" is "<<findLastDigit(N); return 0; }
आउटपुट
The last two digits of 2^14 is 84
यह दृष्टिकोण प्रभावी नहीं है, क्योंकि एन के बड़े मूल्यों के लिए कार्यक्रम ओवरफ्लो होगा।
एक बेहतर तरीका मूल्यों से केवल 2 अंकों पर विचार करके है। और हर घात के लिए इसे दो से गुणा करें।
2^14 के मामले में प्रत्येक के लिए, अंतिम दो अंक 84 हैं। हम पूर्ण संख्या के बजाय 84 को दो से गुणा करेंगे जो गणना को बचाएगा। तो,(84*2)%100 =68.
उदाहरण
#include <iostream> using namespace std; int findLastDigit(int N){ int powerVal = 1; for(int i = 0; i < N; i++){ powerVal = (powerVal * 2)%100; } return powerVal; } int main() { int N = 15; cout<<"The last two digits of 2^"<<N<<" is "<<findLastDigit(N); return 0; }
आउटपुट
The last two digits of 2^15 is 68