피보나치수를 1,234,567로 나눈 나머지를 구하는 문제.
다음의 모듈러 연산의 덧셈 성질을 이용하면 쉽게 해결할 수 있다.
(A + B) mod C = (A mod C + B mod C) mod C
피보나치수를 구하기 위한 bottom-up 과정에서 매 덧셈마다 모듈러 연산을 하도록 작성했다.
https://school.programmers.co.kr/learn/courses/30/lessons/12945
cpp code
using namespace std;
#define M 1234567
int solution(int n) {
int fibo[2] = {0, 1};
for (int i=2;i<=n;i++) {
fibo[i%2] = (fibo[i%2] + fibo[(i+1)%2]) % M;
}
return fibo[n%2];
}