मान लीजिए हमारे पास f(x) = (x^6 + x^2 + 9894845) % 971 जैसा फंक्शन दिया गया है, अब x के दिए गए मान के लिए, हमें f(x) का मान खोजना है।
उदाहरण के लिए, यदि इनपुट 5 है, तो आउटपुट 469 होगा।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- power_mod() फंक्शन परिभाषित करें, जो बेस, एक्सपोनेंट, मॉड्यूलस लेता है
- बेस := बेस मॉड मॉड्यूलस
- रिजल्ट := 1
- जब एक्सपोनेंट > 0 हो:
- यदि एक्सपोनेंट विषम है, तो रिजल्ट := (रिजल्ट * बेस) मॉड मॉड्यूलस
- बेस := (बेस * बेस) मॉड मॉड्यूलस
- एक्सपोनेंट = एक्सपोनेंट / 2
- रिजल्ट लौटाएं
- मेन मेथड से निम्न करें:
- पावर_मोड(n, 6, m) + पावर_मोड(n, 2, m)) मॉड m + 355) मॉड m लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; typedef long long int lli; lli power_mod(lli base, lli exponent, lli modulus) { base %= modulus; lli result = 1; while (exponent > 0) { if (exponent & 1) result = (result * base) % modulus; base = (base * base) % modulus; exponent >>= 1; } return result; } int main(){ lli n = 654654, m = 971; cout<<(((power_mod(n, 6, m)+power_mod(n, 2, m))% m + 355)% m); } इनपुट
84562
आउटपुट
450