zoukankan      html  css  js  c++  java
  • HDU 2256 Problem of Precision (矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2256

    最重要的是构建递推式,下面的图是盗来的。貌似这种叫共轭数。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 #include <cstring>
     5 #include <algorithm>
     6 using namespace std;
     7 const int mod = 1024;
     8 struct data {
     9     int mat[3][3];
    10     data() {}
    11     data(int x, int y, int z1 = 0, int z2 = 0) {
    12         mat[1][1] = x, mat[1][2] = y;
    13         mat[2][1] = z1, mat[2][2] = z2;
    14     }
    15 };
    16 
    17 data operator* (data a, data b) {
    18     data ans;
    19     for(int i = 1; i <= 2; ++i) {
    20         for(int j = 1; j <= 2; ++j) {
    21             ans.mat[i][j] = 0;
    22             for(int k = 1; k <= 2; ++k)
    23                 ans.mat[i][j] = (ans.mat[i][j] + a.mat[i][k] * b.mat[k][j] % mod) % mod;
    24         }
    25     }
    26     return ans;
    27 }
    28 
    29 data operator^ (data a, int n) {
    30     data ans;
    31     for(int i = 1; i <= 2; ++i) {
    32         for(int j = 1; j <= 2; ++j) {
    33             ans.mat[i][j] = (i == j);
    34         }
    35     }
    36     while(n) {
    37         if(n & 1)
    38             ans = ans * a;
    39         a = a * a;
    40         n >>= 1;
    41     }
    42     return ans;
    43 }
    44 
    45 int main()
    46 {
    47     int t, n;
    48     scanf("%d", &t);
    49     while(t--) {
    50         scanf("%d", &n);
    51         data ans(5, 2);
    52         data a(5, 2, 12, 5);
    53         a = a ^ (n - 1);
    54         ans = ans * a;
    55         printf("%d
    ", (ans.mat[1][1] * 2 - 1 + mod) % mod);
    56     }
    57     return 0;
    58 }
    View Code
  • 相关阅读:
    asp.net 奇淫技巧
    生成缩略图不清晰
    NPOI相关
    Dapper
    Newtonsoft.Json高级用法(转载)
    swfobject2.2
    如何把SQLServer数据库从高版本降级到低版本? (转载)
    Smallpdf 轻松玩转PDF。我们爱它。
    Simple Data
    在HTML中优雅的生成PDF
  • 原文地址:https://www.cnblogs.com/Recoder/p/5751455.html
Copyright © 2011-2022 走看看