hdu3306 Another kind of Fibonacci
2015-08-15 17:44
246 查看
题目(http://acm.hdu.edu.cn/showproblem.php?pid=3306)
还是直接构造矩阵,万能的!
f(n)=x*f(n-1)+y*f(n-2);推得
算得
Problem Description As we all known , the Fibonacci series : F(0) = 1, F(1) = 1, F(N) = F(N - 1) + F(N - 2) (N >= 2).Now we define another kind of Fibonacci : A(0) = 1 , A(1) = 1 , A(N) = X * A(N - 1) + Y * A(N - 2) (N >= 2).And we want to Calculate S(N) , S(N) = A(0)2 +A(1)2+……+A(n)2. Input There are several test cases. Each test case will contain three integers , N, X , Y . N : 2<= N <= 231 – 1 X : 2<= X <= 231– 1 Y : 2<= Y <= 231 – 1 Output For each test case , output the answer of S(n).If the answer is too big , divide it by 10007 and give me the reminder. Sample Input 2 1 1 3 2 3 Sample Output 6 196
还是直接构造矩阵,万能的!
f(n)=x*f(n-1)+y*f(n-2);推得
算得
#include <iostream> #define mod 10007; using namespace std; const int Max=4; typedef struct { long long m[Max][Max]; }Matrix; Matrix P={1,1,0,0, 0,0,0,0, 0,1,0,0, 0,0,0,0}; Matrix I={1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1}; Matrix matrixmul(Matrix a,Matrix b) { Matrix c; for(int i=0;i<Max;i++) for(int j=0;j<Max;j++) { c.m[i][j]=0; for(int k=0;k<Max;k++) { c.m[i][j]+=(a.m[i][k]*b.m[k][j])%mod; } c.m[i][j]=c.m[i][j]%mod; } return c; } Matrix quickpow(long long n) { Matrix m=P,b=I; while(n>=1) { if(n&1) b=matrixmul(b,m); n=n>>1; m=matrixmul(m,m); } return b; } int main() {int n,x,y,sum; Matrix tmp; while(cin>>n>>x>>y) { sum=0; x%=mod; y%=mod; P.m[1][1]=(x*x)%mod; P.m[1][2]=(y*y)%mod; P.m[1][3]=(2*x*y)%mod P.m[3][1]=x; P.m[3][3]=y; tmp=quickpow(n); for(int i=0;i<4;i++) sum+=tmp.m[0][i]%mod; long long ans=sum%mod; cout<<ans<<endl; } return 0; }
相关文章推荐
- 使用Python创建.sd服务定义文件,实现脚本自动发布ArcGIS服务
- 使用Python创建.sd服务定义文件,实现脚本自动发布ArcGIS服务
- xml解析 Dom解析
- 华为OJ(计算字符串的相似度)
- 量化需求
- 存储过程1
- 缺乏这四项技能,珠海碰上雷军都不好意思说自己是做产品的
- 了解外链的本质 做好原创内容
- 选择排序(C++版)
- php函数设置时区方法:
- C以及Objective-C测试题讲解(下)
- UIAlertView
- VS2010中项目配置引入GDAL
- 远程log调试工具console.re
- Ubuntu Kylin 14.10如何更改屏幕分辨率?
- OC常用分类——屏幕截图
- [LeetCode] Search Insert Position
- **ios提交应用加急审批**
- Openerp工作流参考资料
- HDU 5297(Y sequence-Mobius函数容斥+迭代)