POJ 3070矩阵乘法和矩阵快速幂加快递推

复制代码
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 const int mod=10000;
 6 int n;
 7 struct matrix
 8 {
 9     int data[2][2];
10     matrix operator*(matrix &b)
11     {
12         matrix c;
13         memset(c.data,0,sizeof(c.data));
14         for(int i=0;i<2;i++)
15         for(int j=0;j<2;j++)
16         for(int k=0;k<2;k++)
17         c.data[i][j]=(c.data[i][j]+this->data[i][k]*b.data[k][j])%mod;
18         return c;
19     }
20 }ans,base;
21 int quipow(int n)
22 {
23     memset(ans.data,0,sizeof(ans.data));
24     memset(base.data,0,sizeof(base.data));
25     ans.data[0][0]=0;ans.data[0][1]=1;
26     base.data[0][1]=base.data[1][0]=base.data[1][1]=1;
27     while(n)
28     {
29         if(n&1)ans=ans*base;
30         n>>=1;
31         base=base*base;
32     }
33     return ans.data[0][0]; 
34 }
35 
36 int main()
37 {
38     while(~scanf("%d",&n)&&~n)
39     {
40         printf("%d\n",quipow(n));
41     }
42     return 0;
43 }
复制代码

 

posted @   matt-11  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示