【codevs1250】Fibonacci数列,矩阵乘法入门
2015-12-29 18:56
441 查看
Fibonacci数列
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题解
题目描述 Description
定义:f0=f1=1, fn=fn-1+fn-2(n>=2)。{fi}称为Fibonacci数列。
输入n,求fn mod q。其中1<=q<=30000。
输入描述 Input Description
第一行一个数T(1<=T<=10000)。
以下T行,每行两个数,n,q(n<=109, 1<=q<=30000)
输出描述 Output Description
文件包含T行,每行对应一个答案。
样例输入 Sample Input
3
6 2
7 3
7 11
样例输出 Sample Output
1
0
10
数据范围及提示 Data Size & Hint
1<=T<=10000
n<=109, 1<=q<=30000
写在前面:不用MarkDown的倔强
思路:转移矩阵快速幂,用结构体函数更快些
代码:
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题解
题目描述 Description
定义:f0=f1=1, fn=fn-1+fn-2(n>=2)。{fi}称为Fibonacci数列。
输入n,求fn mod q。其中1<=q<=30000。
输入描述 Input Description
第一行一个数T(1<=T<=10000)。
以下T行,每行两个数,n,q(n<=109, 1<=q<=30000)
输出描述 Output Description
文件包含T行,每行对应一个答案。
样例输入 Sample Input
3
6 2
7 3
7 11
样例输出 Sample Output
1
0
10
数据范围及提示 Data Size & Hint
1<=T<=10000
n<=109, 1<=q<=30000
写在前面:不用MarkDown的倔强
思路:转移矩阵快速幂,用结构体函数更快些
1 | 1 |
1 | 0 |
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int n,m,t; struct os { int a[3][3]; void clear() { for (int i=1;i<=2;i++) for (int j=1;j<=2;j++) a[i][j]=0; } }x; os add(os x,os y) { os z; z.clear(); for (int i=1;i<=2;i++) for (int j=1;j<=2;j++) for (int k=1;k<=2;k++) z.a[i][j]=(z.a[i][j]+(x.a[i][k]*y.a[k][j])%m)%m; return z; } os qr() { os t,ans; ans.a[1][1]=ans.a[1][2]=ans.a[2][1]=1; while (n!=0) { if (n%2==1) ans=add(ans,x); n/=2; x=add(x,x); } return ans; } main() { scanf("%d",&t); for (int i=1;i<=t;i++) { scanf("%d%d",&n,&m); x.clear(); x.a[1][2]=1; x.a[2][1]=1; x.a[2][2]=1; os ans=qr(); printf("%d\n",ans.a[1][1]); } }
相关文章推荐
- centos之rpm详解
- FreeBSD方式安装 MAC OSX
- 9.4---集合子集(CC150)
- 变态跳台阶
- Mac OSX 中java7 java8环境的配置
- Esper 20章 优化
- 【LCA】bzoj 2144:跳跳棋
- Linux编程之一:创建第一个C/C++程序
- 开荒新系列之LeetCode: 006-Valid Anagram
- Nginx报错 connect() failed (111: Connection refused) while connecting to upstream 的解决方法
- Linux管道通信
- 适配移动
- linux编译64bitHadoop (eg: ubuntu14.04 and hadoop 2.3.0)
- Docker基础命令
- TopCoder SRM 677 Div. 2 550 - FourStrings (枚举)
- HDU 2083 简易版之最短距离
- 利用Canvas saveLayer手动绘制圆角View
- mahout math中相关matrix和vector的用法DEMO
- 预译头之前世今生
- STM32F103学习3:通过器件参考手册和具体程序学习I/O输出操作(MDK软件仿真+硬件实验)