题目地址:HDU 2842
这个游戏是一个九连环的游戏。
假设当前要卸下前n个环。由于要满足前n-2个都卸下,所以要先把前n-2个卸下,需要f(n-2)次。然后把第n个卸下需要1次,然后这时候要卸下第n-1个,然后此时前n-2个都已经被卸下了。这时候把前n-2个都卸下与都装上所需的次数是一样的,因为卸下与装上的规则是一样的。所以又需要f(n-2)次,这时候前n-1个都在上面,卸下前n-1个需要f(n-1)次。
所以,总共需要2*f(n-2)+f(n-1)+1次。
然后构造如下矩阵。
1,2,1
1,0,0
0,0,1
*
f(n-1)
f(n-2)
1
=
f(n)
f(n-1)
1;
然后用矩阵快速幂求解。
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include