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