题目大意:
If x < 10 f(x) = x.
If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);
And ai(0<=i<=9) can only be 0 or 1 .
现在给你k和m,求f(k) % m。
解题思路:
f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10)
其中k为10^9数量级,必然不能用递推的方式做。这类题目可以通过构造矩阵,用矩阵快速幂来做。
构造的矩阵是:
|0 1 0 ......... 0| |f0| |f1 |
|0 0 1 0 ....... 0| |f1| |f2 |
|................1| * |..| = |...|
|a9 a8 .........a0| |f9| |f10|
代码:
/*
ID: wuqi9395@126.com
PROG:
LANG: C++
*/
#include