fibo 수구법 - 저자 소택
3627 단어 귀속
1
2 struct Fib
3 {
4 int x1;
5 int x2;
6 };
7
8 Fib fib(int x)
9 {
10 Fib ans;
11 if(x == 2)
12 {
13 ans.x1 = 0;
14 ans.x2 = 1%MOD;
15 return ans;
16 }
17 Fib temp;
18 int x1 = x/2, x2 = x1 - 1;
19 if(x1%2)
20 {
21 temp = fib(x2);
22 ans.x1 = (2*temp.x1 + temp.x2)*temp.x2%MOD;
23 ans.x2 = ((temp.x1 + temp.x2)*(temp.x1 + temp.x2) + temp.x2*temp.x2)%MOD;
24 }
25 else
26 {
27 temp = fib(x1);
28 ans.x1 = (temp.x1*temp.x1 + temp.x2*temp.x2)%MOD;
29 ans.x2 = (2*temp.x1 + temp.x2)*temp.x2%MOD;
30 }
31 return ans;
32 }