您的位置:首页 > 其它

2013寒假练习 1047 Fibonacci Numbers

2013-02-16 19:08 344 查看
地址: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: