Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาค่าของฟังก์ชัน Y =(X^6 + X^2 + 9894845) % 981 ใน C++


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