UESTC 1335 Fibonacci
2013-08-28 13:25
183 查看
点击打开UESTC 1335
思路: 矩阵快速幂
分析:
1 最简单的矩阵快速幂
代码:
/************************************************
* By: chenguolin *
* Date: 2013-08-28 *
* Address: http://blog.csdn.net/chenguolinblog *
************************************************/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MOD = 10000;
const int N = 2;
int n;
struct Matrix{
int mat
;
Matrix operator*(const Matrix& m)const{
Matrix tmp;
for(int i = 0 ; i < N ; i++){
for(int j = 0 ; j < N ; j++){
tmp.mat[i][j] = 0;
for(int k = 0 ; k < N ; k++)
tmp.mat[i][j] += mat[i][k]*m.mat[k][j]%MOD;
tmp.mat[i][j] %= MOD;
}
}
return tmp;
}
};
int Pow(Matrix m){
if(n <= 1)
return n;
Matrix ans;
memset(ans.mat , 0 , sizeof(ans.mat));
for(int i = 0 ; i < N ; i++)
ans.mat[i][i] = 1;
n--;
while(n){
if(n%2)
ans = ans*m;
n /= 2;
m = m*m;
}
return ans.mat[0][0]%MOD;
}
int main(){
Matrix m;
m.mat[0][0] = m.mat[0][1] = 1;
m.mat[1][0] = 1 ; m.mat[1][1] = 0;
while(scanf("%d" , &n) && n != -1)
printf("%d\n" , Pow(m));
return 0;
}
思路: 矩阵快速幂
分析:
1 最简单的矩阵快速幂
代码:
/************************************************
* By: chenguolin *
* Date: 2013-08-28 *
* Address: http://blog.csdn.net/chenguolinblog *
************************************************/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MOD = 10000;
const int N = 2;
int n;
struct Matrix{
int mat
;
Matrix operator*(const Matrix& m)const{
Matrix tmp;
for(int i = 0 ; i < N ; i++){
for(int j = 0 ; j < N ; j++){
tmp.mat[i][j] = 0;
for(int k = 0 ; k < N ; k++)
tmp.mat[i][j] += mat[i][k]*m.mat[k][j]%MOD;
tmp.mat[i][j] %= MOD;
}
}
return tmp;
}
};
int Pow(Matrix m){
if(n <= 1)
return n;
Matrix ans;
memset(ans.mat , 0 , sizeof(ans.mat));
for(int i = 0 ; i < N ; i++)
ans.mat[i][i] = 1;
n--;
while(n){
if(n%2)
ans = ans*m;
n /= 2;
m = m*m;
}
return ans.mat[0][0]%MOD;
}
int main(){
Matrix m;
m.mat[0][0] = m.mat[0][1] = 1;
m.mat[1][0] = 1 ; m.mat[1][1] = 0;
while(scanf("%d" , &n) && n != -1)
printf("%d\n" , Pow(m));
return 0;
}
相关文章推荐
- UESTC - 278 Fibonacci
- 2016 UESTC Training for Data Structures F - 郭大侠与“有何贵干?” CDOJ 1335 线段树 扫描线 离散化
- 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi CDOJ 1334 优先队列
- UESTC 482 Charitable Exchange(优先队列+bfs)
- NJUST5167 Fibonacci
- 2016 UESTC Training for Dynamic Programming N - 柱爷与子序列 这题和N题有些相似之处、用了树状数组
- [POJ3070]Fibonacci(矩阵快速幂)
- Hat's Fibonacci
- 2016 UESTC Training for Math Problem A-谭爷的黑暗沙拉(组合数学)
- XTU 1236 Fibonacci
- UVA 11582 Colossal Fibonacci Numbers!
- poj3070 Fibonacci
- UESTC621 吴神的大脑
- UESTC 2016 Summer Training #6 Div.2
- UESTC1133 菲波拉契数制 01背包思想
- python3 fibonacci的高效解法
- HDOJ 1848 Fibonacci again and again
- UESTC 93 King's Sanctuary 基础
- hiho 113 Fibonacci
- Poj 3070 Fibonacci (矩阵快速幂)