题目1081:递推数列
2017-02-07 13:25
274 查看
题目描述:
给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q。这里n >= 2。 求第k个数对10000的模。
输入:
输入包括5个整数:a0、a1、p、q、k。
输出:
第k个数a(k)对10000的模。
样例输入:
样例输出:
采用传统的方法会导致超时,故查阅资料使用矩阵的快速幂运算。
下面注释掉的代码为传统方法。
题目链接:
http://ac.jobdu.com/problem.php?pid=1081 参考链接:
http://m.blog.csdn.net/article/details?id=12560065
给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q。这里n >= 2。 求第k个数对10000的模。
输入:
输入包括5个整数:a0、a1、p、q、k。
输出:
第k个数a(k)对10000的模。
样例输入:
20 1 1 14 5
样例输出:
8359
采用传统的方法会导致超时,故查阅资料使用矩阵的快速幂运算。
下面注释掉的代码为传统方法。
#include<stdio.h> #define BIG 10000 /* int main() { int a0, a1, p, q, k; while (scanf("%d%d%d%d%d", &a0, &a1, &p, &q, &k) != EOF) { int pre1 = a1; int pre2 = a0; int cur = 0; for (int i = 2; i <= k; i++) { cur = ((p * pre1) % BIG + (q * 4000 pre2) % BIG) % BIG; pre2 = pre1; pre1 = cur; } printf("%d\n", cur); } return 0; } */ struct Matrix { int a, b, c, d; }; Matrix mul(Matrix m, Matrix n) { Matrix res; res.a = (m.a * n.a + m.b * n.c) % BIG; res.b = (m.a * n.b + m.b * n.d) % BIG; res.c = (m.c * n.a + m.d * n.c) % BIG; res.d = (m.c * n.b + m.d * n.d) % BIG; return res; } Matrix pow(Matrix m, int k) { Matrix res; res.a = res.d = 1; res.b = res.c = 0; while (k > 0) { if (k & 1 == 1) res = mul(res, m); m = mul(m, m); k = k >> 1; } return res; } int main() { int a0, a1, p, q, k; Matrix m; while (scanf("%d%d%d%d%d", &a0, &a1, &m.a, &m.b, &k) != EOF) { m.c = 1; m.d = 0; if (k == 0) printf("%d\n", a0); else if (k == 1) printf("%d\n", a1); else { k--; Matrix res = pow(m, k); printf("%d\n", (res.a * a1 + res.b * a0) % BIG); } } return 0; }
题目链接:
http://ac.jobdu.com/problem.php?pid=1081 参考链接:
http://m.blog.csdn.net/article/details?id=12560065
相关文章推荐
- 九度OJ题目1081:递推数列-快速幂
- 九度OJ题目1081:递推数列-快速幂
- 题目1081:递推数列
- 题目1081:递推数列
- 题目1081:递推数列
- 题目1081:递推数列
- 九度OJ 题目1081:递推数列
- 题目1081:递推数列
- 题目1081:递推数列 (矩阵快速幂解递推式)
- 九度 oj 题目1081:递推数列
- 题目1081:递推数列
- 题目1081:递推数列(矩阵二分乘法)
- 九度OJ题目1081:递推数列解题报告
- HDOJ题目1081 To The Max(动态规划)
- 九度OJ 1081: 递推数列
- OJ_1081 递推数列
- 九度OJ 1081:递推数列 (递归,二分法)
- 九度OJ 1081:递推数列 (递归,二分法)
- 九度OJ 1081 清华09机试题之递推数列
- 九度oj1081递推数列的算法