zoukankan      html  css  js  c++  java
  • A Simple Math Problem(矩阵快速幂)

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

    思路:矩阵快速幂模板题,不过因为刚刚入门矩阵快速幂,所以经常把数组f存反,导致本地错误一晚,差点心态爆炸……

    代码实现如下:

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 int k, m;
     5 int a[10], f[10], mp[10][10];
     6 
     7 void mulself(int a[10][10]) {
     8     int c[10][10];
     9     memset(c, 0, sizeof(c));
    10     for(int i = 0; i < 10; i++) {
    11         for(int j = 0; j < 10; j++) {
    12             for(int k = 0; k < 10; k++) {
    13                 c[i][j] = (c[i][j] + (long long)a[i][k] * a[k][j]) % m;
    14             }
    15         }
    16     }
    17     memcpy(a, c, sizeof(c));
    18 }
    19 
    20 void mul(int f[10], int a[10][10]) {
    21     int c[10];
    22     memset(c, 0, sizeof(c));
    23     for(int i = 0; i < 10; i++) {
    24         for(int j = 0; j < 10; j++) {
    25             c[i] = (c[i] + (long long)f[j] * a[j][i] ) % m;
    26         }
    27     }
    28     memcpy(f, c, sizeof(c));
    29 }
    30 
    31 int main() {
    32     while(~scanf("%d%d", &k, &m)) {
    33         for(int i = 0; i < 10; i++) {
    34             scanf("%d", &a[i]);
    35         }
    36         for(int i = 0; i < 10; i++) {
    37             f[i] = 9 - i;
    38         }
    39         if(k <10) {
    40             printf("%d
    ", f[k]);
    41             continue;
    42         }
    43         memset(mp, 0, sizeof(mp));
    44         for(int i = 0; i < 10; i++) {
    45             mp[i][0] = a[i];
    46         }
    47         for(int i = 0; i < 9; i++) {
    48             mp[i][i + 1] = 1;
    49         }
    50         k = k - 9;
    51         for(; k; k >>= 1) {
    52             if(k & 1) mul(f, mp);
    53             mulself(mp);
    54         }
    55         printf("%d
    ", f[0]);
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    基于IFC的建筑工地模拟
    IfcProcedureTypeEnum
    IfcSimplePropertyTemplate
    IfcRelDefinesByObject
    ubuntu 安装 Protobuf3 日志
    IfcDistributionElement
    IfcTypeResource
    Github上很酷的项目汇总
    Simulink模块库分类
    利用Simulink设计一个简单的模型
  • 原文地址:https://www.cnblogs.com/Dillonh/p/8964508.html
Copyright © 2011-2022 走看看