码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 3070 矩阵快速幂

时间:2015-04-06 00:53:32      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

  裸题,最简单fib的应用模板,算是新技能get 吧。

  其实和快速幂差不多了,只是矩阵代替的递推式。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 const int maxn = 1005;
 6 struct node
 7 {
 8     int a[2][2];
 9     void init()
10     {
11         a[0][0] = a[1][0] = a[0][1] = 1;
12         a[1][1] = 0;
13     }
14 };
15 node mul(node a,node b)
16 {
17     node c;
18     for(int i = 0;i<2;++i)for(int j = 0;j<2;++j)
19     {
20         c.a[i][j] = 0;
21         for(int k = 0;k<2;++k)c.a[i][j] = (c.a[i][j]+a.a[i][k]*b.a[k][j])%10000;
22     }
23     return c;
24 }
25 node solve(int n)
26 {
27     node s,ret;
28     s.init();ret.init();
29     while(n)
30     {
31         if(n&1)ret = mul(ret,s);
32         s = mul(s,s);
33         n/=2;
34     }
35     return ret;
36 }
37 int main()
38 {
39     int n;
40     while(~scanf("%d",&n) && n!=-1)
41     {
42         if(!n){printf("0\n");continue;}
43         node ans = solve(n-1);
44         printf("%d\n",ans.a[1][0]%10000);
45     }
46     return 0;
47 }

 

  

POJ 3070 矩阵快速幂

标签:

原文地址:http://www.cnblogs.com/GJKACAC/p/4395138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!