สมมติว่าเราได้ให้ฟังก์ชันเช่น 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