【poj3070】Fibonacci
矩乘快速幂入门
题目已经把题解讲得很清楚了
1 #include<cstdio> 2 #include<cstring> 3 #include<cassert> 4 #include<algorithm> 5 using namespace std; 6 #define p 10000 7 #define N 10 8 #define ll long long 9 struct matrix{ 10 int n,m; 11 int mat[N][N]; 12 matrix(){ 13 memset(mat,0,sizeof(mat)); 14 } 15 void print(){ 16 printf("%d\n",mat[0][0]%p); 17 } 18 }m0,trs; 19 matrix operator *(matrix m1,matrix m2){ 20 assert(m1.m==m2.n); 21 matrix res; 22 res.n=m1.n; 23 res.m=m2.m; 24 for (int i=0;i<m1.n;i++) 25 for (int j=0;j<m2.m;j++) 26 for (int k=0;k<m1.m;k++) 27 res.mat[i][j]+=(ll)m1.mat[i][k]*m2.mat[k][j]%p; 28 return res; 29 } 30 matrix quickpow(matrix x,int y){ 31 matrix res; 32 res.n=res.m=2; 33 res.mat[1][1]=res.mat[0][0]=1; 34 while (y){ 35 if (y&1) res=res*x; 36 x=x*x; 37 y>>=1; 38 } 39 return res; 40 } 41 int main(){ 42 ll k; 43 scanf("%lld",&k); 44 m0.m=2;m0.n=1; 45 m0.mat[0][0]=m0.mat[0][1]=1; 46 trs.m=trs.n=2; 47 trs.mat[1][1]=trs.mat[1][0]=trs.mat[0][1]=1; 48 while (k!=-1){ 49 if (k==0) printf("0\n"); 50 else (m0*quickpow(trs,k-1)).print(); 51 scanf("%lld",&k); 52 } 53 return 0; 54 }
STD
PS:
矩乘的简单理解:http://www.ruanyifeng.com/blog/2015/09/matrix-multiplication.html
矩阵拓展:08年国家集训队论文,
http://wenku.baidu.com/link?url=O5_d_kstn_0Ym7zrCiZa1EYPuKlun-K1OHeV42s0pt64JVGvJKSf2gFKyr7hAYEm9SBu52xdUhNkYemH6blJjaaK5fhbIfPjrQuqNAU90EG
转载于:https://www.cnblogs.com/Absolute-Zero/p/5931265.html
【poj3070】Fibonacci相关推荐
- 【Java】Fibonacci数列编程实现
编程实现--递归/非递归 public class Fibonacci {private static int fibonacci1(int n) {if(n <= 1) {return 1;} ...
- 【codevs1250】Fibonacci数列,矩阵乘法入门
Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 定义:f0=f1=1, fn=fn-1+fn-2 ...
- C++初阶习题(牛客)【4】Fibonacci数列
题目描述 牛客网链接 Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数 ...
- 【HDU1848】Fibonacci again and again(博弈论)
题面 Hdu 你有三堆石子,每堆石子的个数是 n,m,p n , m , p n,m,p,你每次可以从一堆石子中取走斐波那契数列中一个元素等数量的石子数,两人轮流取,不能操作者输,判定先后手的胜利. ...
- 【递归 动态规划 备忘录法】Fibonacci数列(斐波那契数列)(C++)
一.什么是Fibonacci数列 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144- 用文字来说,就是从第3项开始,每一项都等于前两项 ...
- 【HDOJ】1021 Fibonacci Again_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1021 [报告] 题意是问F[i]是否能被3整除. 根据 (a+b)%m=(a%m+b%m)%m 原则(具 ...
- 【hdu 1848】Fibonacci again and again
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- 【PE258】A lagged Fibonacci sequence
[题目链接] 点击打开链接 [思路要点] 用Cayley-Hamilton定理优化线性递推. 时间复杂度O(N2LogK)O(N2LogK)O(N^2LogK),其中N=2000,K=1018N=20 ...
- 【fjwc2015】世界树
[题目描述] 奥丁杀死的巨人伊米尔后,从伊米尔的尸体上生长出来一株巨大的梣树,它是整个宇宙的核心,被称为世界之树,这个巨木的枝干构成了整个世界,它被神秘的奥术力量所守护. 奥丁发现,世界树的每个节点至 ...
最新文章
- 重庆市计算机专业高考试题,今年重庆高校毕业生达21.1万人 计算机类专业需求大...
- matlab 代谢流分析,代谢网络流分析进展及应用-生物在线.PDF
- P3957-跳房子【单调队列,dp,二分】
- 小程序 国际化_在国际化您的应用程序时忘记的一件事
- java 面板 选择颜色_[代码全屏查看]-java颜色选择器
- 阿里巴巴中文站架构设计实践(何崚)图书
- 开源微信管家平台——JeeWx 捷微4.0 微服务版本发布,全新架构,全新UI,提供强大的图文编辑器...
- Python+sklearn使用逻辑回归算法预测期末考试能否及格
- python3_04.循环函数
- 从C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe返回错误
- C 使用异或(xor)加密/解密文件
- java 分词获取词性_jie分词之分词、词性分析、关键词抽取
- Ant-Table查看详情
- 斑马打印机怎么设置标签纸
- 普通高考录取成绩查询2021,重磅!2021年全国高考录取分数线预测
- cdr怎么新建和删除图层
- 驱动程序如何手动卸载与更新
- Vector CANoe修改Panel的名字
- jQuery学习之旅 Item1 选择器【一】
- Word制作毕业论文技巧实例--转载