f(x) =(x^6 + x^2 + 9894845) % 971과 같은 함수를 제공했다고 가정합니다. 이제 x의 주어진 값에 대해 값을 찾아야 합니다. f(x).
따라서 입력이 5와 같으면 출력은 469가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
power_mod() 함수를 정의합니다. 기본, 지수, 계수,
-
base :=기본 모듈러스
-
결과 :=1
-
지수> 0일 때 −
-
지수가 홀수이면 -
-
결과 :=(결과 * 기본) 모듈러스
-
-
base :=(base * base) 모듈러스
-
지수 =지수 /2
-
-
반환 결과
-
주요 방법에서 다음을 수행하십시오 -
-
return 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