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