Fibonacci(POJ3070)
2016-04-04 16:08
387 查看
题目链接http://poj.org/problem?id=3070
涨姿势了原来斐波那契还可以用矩阵去算。也当是知识积累,同时更新自己的模板库
涨姿势了原来斐波那契还可以用矩阵去算。也当是知识积累,同时更新自己的模板库
#include <cstdio> #include <iostream> #include <vector> using namespace std; typedef vector<int> vec; typedef vector<vec> mat; typedef long long LL; const int N = 10000; mat mul(mat a,mat b) //矩阵乘法 { mat c(a.size(),vec(b[0].size())); for(int i=0; i<a.size(); i++) { for(int k=0; k<b.size(); k++) { for(int j=0; j<b[0].size(); j++) c[i][j] = ( c[i][j] + a[i][k] * b[k][j] ) % N; } } return c; } mat solve_pow(mat a,int n) //快速幂 { mat b(a.size(),vec(a.size())); for(int i=0; i<a.size(); i++) b[i][i]=1; while(n>0) { if(n & 1) b=mul(b,a); a=mul(a,a); n >>= 1; } return b; } LL n; int main() { while(cin>>n,n!=-1) { mat a(2,vec(2)); a[0][0]=1,a[0][1]=1; a[1][0]=1,a[1][1]=0; a=solve_pow(a,n); printf("%d\n",a[1][0]); } return 0; }
相关文章推荐
- Linux USB 驱动开发(四)—— 热插拔那点事
- 对URL的使用
- MySQL 使用方法简单教程
- Tcl -- split/join
- PHP开源框架Laravel的安装与配置
- 114. Flatten Binary Tree to Linked List
- Oracle12c功能增强 新特性之管理功能的增强
- 做一个领导喜欢的员工
- pwnable之coin1
- 欢迎使用CSDN-markdown编辑器
- 太空3D
- 005 ZeroMQ REQ-<ROUTER-Dealer>-REP代理应答与请求
- POJ 3420 (矩阵二分幂优化,状压DP)
- 内存栈与内存堆得区别
- 第四周总结
- iOS之大文件下载(NSURLConnection)
- iOS之小文件下载
- java值传递
- 循环创建按钮
- 关于程序员职业生涯的若干问题思考