https://codeforces.com/contest/1182/problem/E
써보면서 했더니
f4 = f1^1 * f2^1 * f3^1
f5 = 2 2 1
f6 = 4 3 2
f7 = 7 6 4
f8 = 13 11 7
이런식으로 f1 ,f2, f3를 몇번 제곱하는지를 구해서 풀면 되는건 알겠음
N이 10^18이라 그냥 값을 저장하는 식으로 구할수는 없는거 같고 푼 사람들 보니까 행렬썼던데
여기서 이해가 안가는게 행렬안의 원소의 값도 엄청 커질 수 있으니까 mod연산으로 처리를 하던데
문제에서 주어진 값(1e9+7)이 아니라 (1e9+7 -1)값으로 mod연산을 처리하던데 이렇게 해도 결과에 영향이 없는 이유가 궁금합니다.
수학...쪽 내용인거 같아서 공부하려 하는데 일단 이거 너무 궁금해서 미치겠음;;;
그야 10^9+7로 나눈 나머지를 구하는 문제인데, 행렬로 계산한것은 f1^??? 에서 ???에 들어갈 값이잖아. 10^9+7은 소수니까 페르마 소정리에 따르면 f1이 어떤 값이든 간에 f1^(10^9 + 7) = f1 임. 그렇기 때문에 지수의 위치에서는 마치 mod 10^9+6 처럼 취급해도 되는거고
그리고 f1, f2, f3 말고도 c에 대한 지수도 처리해야 함. 이것도 행렬로 처리 가능한데 점화식 계산을 해야함
감사합니다ㅠㅠ감사합니다ㅠㅠ