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