2013寒假练习 1047 Fibonacci Numbers

来源:互联网 发布:php银联支付流程 编辑:程序博客网 时间:2024/06/06 03:02

地址:http://acm.bit.edu.cn/mod/programming/view.php?id=698

求第n个斐波那契数mod p 的结果。矩阵快速幂入门题。

#include<iostream>using namespace std;typedef struct MATRIX{__int64 a[2][2];}matrix;matrix I;int n,p;matrix operator * (matrix x,matrix y){matrix ans;for(int i=0;i<2;i++){for(int j=0;j<2;j++){ans.a[i][j]=(x.a[0][i]*y.a[j][0]%p+x.a[1][i]*y.a[j][1]%p)%p;}}return ans;}int main(){while(~scanf("%d%d",&n,&p)){matrix I={1,1,1,0};matrix t={1,0,0,1};n--;while(n>1){if(n%2) t=t*I;n/=2,I=I*I;}t=t*I;if(n+1) printf("%d\n",t.a[0][0]);else printf("0\n");}return 0;}


 

原创粉丝点击