zoukankan      html  css  js  c++  java
  • poj3734 Blocks

    思路:

    递推 + 快速幂优化。

    实现:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <vector> 
     4 using namespace std;
     5 typedef vector<vector<int> > matrix;
     6 
     7 const int MOD = 10007;
     8 
     9 matrix multiply(matrix & a, matrix & b)
    10 {
    11     matrix c(a.size(), vector<int>(b[0].size()));
    12     for (int i = 0; i < a.size(); i++)
    13     {
    14         for (int k = 0; k < a[0].size(); k++)
    15         {
    16             for (int j = 0; j < b[0].size(); j++)
    17             {
    18                 c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % MOD;
    19             }
    20         }
    21     }
    22     return c;
    23 }
    24 
    25 matrix pow(matrix & a, long long n)
    26 {
    27     matrix res(a.size(), vector<int>(a[0].size()));
    28     for (int i = 0; i < a.size(); i++)
    29     {
    30         res[i][i] = 1;
    31     }
    32     while (n > 0)
    33     {
    34         if (n & 1)
    35             res = multiply(res, a);
    36         a = multiply(a, a);
    37         n >>= 1;
    38     }
    39     return res;
    40 }
    41 int main()
    42 {
    43     int t;
    44     long long n;
    45     cin >> t;
    46     while (t--)
    47     {
    48         scanf("%lld", &n);
    49         matrix a(3, vector<int>(3));
    50         a[0][0] = 2; a[0][1] = 1; 
    51         a[1][0] = 2; a[1][1] = 2; a[1][2] = 2;
    52                      a[2][1] = 1; a[2][2] = 2;
    53         a = pow(a, n);
    54         matrix b(3, vector<int>(1));
    55         b[0][0] = 1;
    56         b[1][0] = 0;
    57         b[2][0] = 0;
    58         a = multiply(a, b);
    59         cout << a[0][0] << endl;
    60     }
    61     return 0;    
    62 } 
  • 相关阅读:
    Spring Boot 内嵌Tomcat的端口号的修改
    仅显示INPUT下边框
    2015面试记三
    2015面试记二
    2015面试记一
    最近工作学习心得体会
    Tomcat批处理文件小结
    启动Tomcat一闪而过——分析及解决过程
    WIN7安装及配置JDK
    Firefox下载文件时中文名乱码问题
  • 原文地址:https://www.cnblogs.com/wangyiming/p/9093514.html
Copyright © 2011-2022 走看看