Giả sử chúng ta đã cho hàm f (x) =(x ^ 6 + x ^ 2 + 9894845)% 971, bây giờ với một giá trị cho trước của x, chúng ta phải tìm giá trị đó của f (x).
Vì vậy, nếu đầu vào là 5, thì đầu ra sẽ là 469
Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau -
-
Xác định một hàm power_mod (), hàm này sẽ lấy cơ số, số mũ, mô đun,
-
base:=base modulus
-
kết quả:=1
-
trong khi số mũ> 0, do -
-
nếu số mũ là số lẻ, thì -
-
mô đun kết quả:=(kết quả * cơ sở)
-
-
cơ sở:=(cơ sở * cơ sở) mô-đun mô-đun
-
exponent =exponent / 2
-
-
trả về kết quả
-
Từ phương thức chính, thực hiện như sau -
-
trả về power_mod (n, 6, m) + power_mod (n, 2, m)) mod m + 355) mod m
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#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);
} Đầu vào
84562
Đầu ra
450