इस समस्या में हमें दो अंक a और b दिए गए हैं। हमारा काम बड़ी संख्याओं के लिए a^b का अंतिम अंक खोजना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: ए =4 बी =124
आउटपुट: 6
स्पष्टीकरण:
a^b का मान 4.523128486 * 10 74 . है
समाधान दृष्टिकोण
समस्या का समाधान इस तथ्य पर आधारित है कि किसी संख्या के सभी घातांक 4 घातांक मानों के बाद दोहराए जाएंगे।
तो, हम b%4 का मान ज्ञात करेंगे। साथ ही, किसी भी आधार मान के लिए, उसके घात का अंतिम अंक आधार मान के अंतिम अंक से तय होता है।
तो, परिणामी मूल्य की गणना इस प्रकार की जाएगी
a ^ (b%4) का अंतिम मान
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <bits/stdc++.h> using namespace std; int calcModulus(char b[], int a) { int mod = 0; for (int i = 0; i < strlen(b); i++) mod = (mod * 10 + b[i] - '0') % a; return mod; } int calcLastDigitInExpo(char a[], char b[]) { int len_a = strlen(a), len_b = strlen(b); if (len_a == 1 && len_b == 1 && b[0] == '0' && a[0] == '0') return 1; if (len_b == 1 && b[0] == '0') return 1; if (len_a == 1 && a[0] == '0') return 0; int exponent = (calcModulus(b, 4) == 0) ? 4 : calcModulus(b, 4); int base = a[len_a - 1] - '0'; int result = pow(base, exponent); return result % 10; } int main() { char a[] = "559", b[] = "4532"; cout<<"The last digit in of the value is "<<calcLastDigitInExpo(a, b); return 0; }
आउटपुट
The last digit in of the value is 1