मान लीजिए कि हमने f(x) =(x^6 + x^2 + 9894845) % 971 जैसे फ़ंक्शन दिए हैं, अब x के दिए गए मान के लिए, हमें मान ज्ञात करना होगा f(x) का।
तो, अगर इनपुट 5 की तरह है, तो आउटपुट 469 होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक फ़ंक्शन को परिभाषित करें power_mod(), यह आधार, घातांक, मापांक,
. लेगा -
आधार:=आधार मापांक
-
परिणाम:=1
-
जबकि घातांक> 0, करें −
-
यदि घातांक विषम है, तो -
-
परिणाम:=(परिणाम * आधार) मॉडुलस
-
-
आधार:=(आधार * आधार) मॉड मॉड्यूलस
-
घातांक =प्रतिपादक /2
-
-
वापसी परिणाम
-
मुख्य विधि से निम्न कार्य करें -
-
वापसी power_mod(n, 6, m)+power_mod(n, 2, m)) mod m + 355) mod 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