poj3070 Fibonacci
来源:互联网 发布:淘宝怎么申请介入处理 编辑:程序博客网 时间:2024/06/18 15:24
http://poj.org/problem?id=3070
二进制的思想:将N拆为二进制数,譬如13=(1101)2那么 A^13= A^8 * A^4 * A^1。这个在求快速幂模的时候经常用。
#include <stdio.h>typedef struct node{ int m[2][2];}Matrix;Matrix base,answer;void init_Matrix(Matrix* b_matrix, Matrix* i_matrix){ (*b_matrix).m[0][0]=(*b_matrix).m[0][1]=(*b_matrix).m[1][0]=1; (*b_matrix).m[1][1]=0; (*i_matrix).m[0][0]=(*i_matrix).m[1][1]=1;/*单位矩阵*/ (*i_matrix).m[0][1]=(*i_matrix).m[1][0]=0;}Matrix Multiplication(Matrix A,Matrix B)//矩阵乘法{ Matrix pro; int i,j,k; for(i=0;i<2;i++) { for(j=0;j<2;j++) { pro.m[i][j]=0; for(k=0;k<2;k++) { pro.m[i][j]+=(A.m[i][k]*B.m[k][j]); pro.m[i][j]%=10000; } } } return pro;}int Fast_Exponentiation(int x)//快速幂: base^x{ while(x) { if(x&0x1) answer=Multiplication(answer,base); base=Multiplication(base,base); x>>=1; } return answer.m[0][1];}int main(){ int n; while(~scanf("%d",&n)&&n!=-1) { init_Matrix(&base,&answer); printf("%d\n",Fast_Exponentiation(n)); }return 0;}
0 0
- POJ3070 Fibonacci
- Fibonacci(poj3070)
- POJ3070 Fibonacci
- poj3070 Fibonacci
- [POJ3070]Fibonacci
- poj3070 Fibonacci
- poj3070 Fibonacci
- poj3070 Fibonacci
- 【poj3070】 Fibonacci
- 【poj3070】Fibonacci
- 【poj3070】Fibonacci
- POJ3070-Fibonacci
- POJ3070-Fibonacci
- Fibonacci(poj3070斐波拉数)
- Fibonacci(POJ3070)
- poj3070 Fibonacci 数论专题
- 【poj3070】 Fibonacci 【矩阵乘法】
- 【poj3070】Fibonacci(矩阵)
- JSP学习笔记(二)
- 大话设计模式 三
- 从今天起,记录我的点点滴滴~
- 读《经济学通识》薛兆丰
- CentOS 7 下VMWARE虚拟机克隆后网络设置的问题
- poj3070 Fibonacci
- mybatis -- 由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理
- puppet基础学习(二)
- PAT 1054. 求平均值 (20)
- SpringMvc的入门案例
- 大话设计模式 二
- 学习笔记一
- SpringMVC学习笔记
- PAT甲级1002. A+B for Polynomials (25)