POJ 3070 Fibonacci
来源:互联网 发布:nc数据下载 编辑:程序博客网 时间:2024/05/30 05:40
题意:斐波那契数列,F0 = 0,F1 = 1, andFn =Fn − 1 +Fn − 2 forn ≥ 2。给一个数n,求斐波那契数列第n项模10000
解题思路:n最大到10^9,直接算肯定会炸,所以要用矩阵快速幂
代码:
#include <iostream>#include <algorithm>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <vector>using namespace std;typedef vector<int> vec;typedef vector<vec> mat;typedef long long ll;const int mod=10000;ll n;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])%mod; } } } return C;}mat pow(mat A,ll 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;}void solve(){ mat A(2,vec(2)); A[0][0]=1;A[0][1]=1; A[1][0]=1;A[1][1]=0; A=pow(A,n); printf("%d\n",A[1][0]);}int main(){ while(scanf("%I64d",&n)&&n!=-1) { solve(); } return 0;}
阅读全文
0 0
- POJ 3070 Fibonacci
- POJ 3070 Fibonacci
- poj 3070 Fibonacci
- poj 3070 Fibonacci
- poj 3070 Fibonacci
- poj 3070 Fibonacci
- POJ 3070 Fibonacci
- poj 3070:Fibonacci
- POJ FIBONACCI (3070)
- POJ 3070 Fibonacci
- POJ 3070 Fibonacci (矩阵)
- POJ 3070 Fibonacci
- POJ 3070 Fibonacci
- poj-3070-Fibonacci
- poj 3070 Fibonacci
- POJ 3070 Fibonacci
- poj 3070 Fibonacci
- poj 3070 Fibonacci
- jQuery 之 Callback 实现
- tomcat添加manager-gui
- Hololens API解析Input-GestureSettings/InteractionSourceKind
- 使用phpStudy配置composer依赖的优化
- hibernate session的一级缓存,二级缓存以及查询缓存
- POJ 3070 Fibonacci
- Leetcode题解-3. Longest Substring Without Repeating Characters
- bzoj 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机
- 如何平衡工作与家庭
- HDU 6198 number number number(斐波那契)
- JQUERY中的事件处理:return false、阻止默认行为、阻止冒泡以及兼容性问题
- weblogic10与myeclipse开发环境的集成
- SSH03---实现用户管理组功能
- MySQL(1)