Dãy Fibonnaci bội 3 có tính chất F(n+3)=F(n+2)+F(n+1)+F(n) n>3.
Đặt
0 0 1
1 0 1 :=A
0 1 1
khi đó ta có [ F(n) F(n+1) F(n+2) ] * A =[F(n+1) F(n+2) F(n+3) ] n>3
=> [ F(n+1) F(n+2) F(n+3) ] = [ F(1) F(2) F(3)] * A ^n= [1 1 1] *A ^n ; n>3
Do các phép toán cộng và nhân được coi là phép toán cơ bản nên ta có thể̉ tính A^n với thời gian O(log n). Từ đó suy ra thuật toán.
PS: Cái giả mã cho giải thuât mọi người tự viết nhá ^^
Thế này nghĩ ra được thì chỉ có siêu nhân...
Trả lờiXóaBó tay, thế này mà bác bảo đơn giản :( ngồi thi nghĩ = mắt !!! trừ khi đã đọc đc ở đâu đấy, Đại ca Nghĩa vẫn thâm lắm ...
Trả lờiXóachang hieu gi nhung ma co ve cach nay hay that day
Trả lờiXóa