HDU 2256 Problem of Precision 解题报告(矩阵快速幂 + 构造)
2014-04-30 11:46
495 查看
Problem of Precision
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 844 Accepted Submission(s): 489
Problem Description
![](http://acm.hdu.edu.cn/data/images/C142-1010-1.jpg)
Input
The first line of input gives the number of cases, T. T test cases follow, each on a separate line. Each test case contains one positive integer n. (1 <= n <= 10^9)
Output
For each input case, you should output the answer in one line.
Sample Input
3
1
2
5
Sample Output
9
97
841
解题报告: 想了很久,没有思路……看了解题报告
推理过程如下:
最终结果表明,中途取模也不会有影响,用矩阵快速幂求的xn即可。代码如下
#include <cstdio> #include <cstring> #include <map> #include <cmath> #include <algorithm> using namespace std; const int mod=1024; struct Matrix { int a[2][2]; Matrix(int t=0) { memset(a, 0, sizeof(a)); a[0][0]=a[1][1]=t; } Matrix operator*(const Matrix& cmp) const { Matrix c; for(int i=0;i<2;i++) for(int j=0;j<2;j++) { long long t=0; for(int k=0;k<2;k++) t+=a[i][k]*cmp.a[k][j]; c.a[i][j]=t%mod; } return c; } } p; Matrix powM(Matrix a, int b) { Matrix res(1); while(b) { if(b&1) res=res*a; a=a*a; b>>=1; } return res; } int main() { p.a[0][0]=5; p.a[0][1]=2; p.a[1][0]=12; p.a[1][1]=5; int T; scanf("%d", &T); while(T--) { int n; scanf("%d", &n); Matrix r = powM(p, n-1); int res = 2*(5*r.a[0][0]+2*r.a[1][0])-1; printf("%d\n", res%mod); } }
相关文章推荐
- HDU 2256 Problem of Precision (矩阵快速幂)
- HDU 2256 Problem of Precision 构造矩阵
- HDU 2256 Problem of Precision(矩阵快速幂)
- HDU 2256 Problem of Precision(矩阵快速幂)
- HDU 2256 Problem of Precision(矩阵快速幂 数论 )
- HDU 2256 Problem of Precision (矩阵快速幂+ 化简 +向下取整)
- HDU 2256 Problem of Precision 数论矩阵快速幂
- hdu 2256 Problem of Precision(矩阵快速幂,得出递推式有难度)
- Hdu 2256 Problem of Precision[矩阵快速幂 + 数学]
- hdu 2256 Problem of Precision -矩阵快速幂
- HDU 2256 Problem of Precision(矩阵快速幂入门题)
- HDU 2256 Problem of Precision (矩阵快速幂)
- HDU - 2256 Problem of Precision 矩阵快速幂
- hdu 2256 Problem of Precision 矩阵快速幂
- hdu 2256 Problem of Precision(矩阵快速幂 推公式)
- HDU2256-Problem of Precision(矩阵构造+高速幂)
- HDU 2256 Problem of Precision(矩阵高速幂)
- HDU 2256 Problem of Precision(找规律+矩阵)
- hdoj 2256 Problem of Precision 【矩阵快速幂】【构建矩阵好题】
- POJ 3735 Training little cats 解题报告(矩阵构造+快速幂优化)