HDU 4549
题解: 首先能够观察到, 各项a, b的指数满足斐波那契数列, 且a得指数是b的指数的前一项。
如: f[0] = a ^ 1 * b ^ 0
f[ 1 ] = a ^ 0 * b ^ 1
f[2] = a ^ 1 * b ^ 1,
f[3] = a ^ 1 * b ^ 2
f[4] = a ^ 2 * b ^ 3
f[5] = a ^ 3 * b ^ 5......
poj3070里求斐波那契数列用到了费马小定理,
对于斐波那契数列: 第n(n >= 0) 的值为矩阵(二阶方阵) 0 , 1, 1, 1的n次方矩阵的第二项即, f(n -1), f(n), f(n), f(n + 1) 对应其n次方。
所以用一个二阶方阵求其矩阵幂, 就可以得到第n项a, b的指数。
特殊的: 方阵0次方为单位矩阵, 这题也是满足的。
然后就是根据指数求快速幂了。
ps:全局都用long long , 因为这个TLE8次, 心累。。。。
code:
/*
adrui's submission
Language : C++
Result : Accepted
Love : ll
Favorite : Dragon Balls
Standing in the Hall of Fame
*/
#include
#include
#include
#include
#include
#include
#include