Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm giá trị của hàm Y =(X ^ 6 + X ^ 2 + 9894845)% 981 trong C ++


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