//Accepted    220 KB    359 ms
 #include <cstdio>
 #include <cstring>
 ;
 int pp;
 struct matrix
 {
     //矩阵m*n
     //(0,0)..(m-1,n-1)
     int a[maxn][maxn];
     int m,n;
     matrix()
     {
         memset(a,,sizeof(a));
         m=n=;
     }
     matrix operator+(matrix mymatrix)
     {
         matrix m_matrix;
         int i,j;
         ;i<m;i++)
         ;j<n;j++)
         m_matrix.a[i][j]=(a[i][j]+mymatrix.a[i][j])%pp;
         m_matrix.m=m;
         m_matrix.n=n;
         return m_matrix;
     }
     matrix operator*(matrix mymatrix)
     {
         matrix m_matrix;
         int i,j,k;
         ;i<m;i++)
         {
             ;j<n;j++)
             {
                 if (a[i][j])
                 ;k<mymatrix.n;k++)
                 m_matrix.a[i][k]=(m_matrix.a[i][k]+a[i][j]*mymatrix.a[j][k])%pp;
             }
         }
         m_matrix.m=m;
         m_matrix.n=mymatrix.n;
         return m_matrix;
     }
     //A^k
     matrix getp(int k)
     {
         matrix d,c;
         ) return *this;
         ) return (*this)*(*this);
         d=getp(k/);
         ==) return d*d;
         else
         return d*d*(*this);
     }
     //A+A^2+A^3+..+A^k
     matrix sump(int k)
     {
         matrix d,c;
         ) return *this;
         ) return (*this)+(*this)*(*this);
         d=sump(k/);
         ==)
         {
             );
         }
         else
         )+getp(k);
     }
     void output()
     {
         int i,j;
         ;i<m;i++)
         {
             ;j<n;j++)
             printf("%d ",a[i][j]%pp);
             printf("\n");
         }
     }
     void input()
     {
         ;i<m;i++)
         {
             ;j<n;j++)
             {
                 scanf("%d",&a[i][j]);
             }
         }
     }
 };
 int n;
 int k;
 matrix tr,mtr;
 int main()
 {
     pp=;
     int T;
     scanf("%d",&T);
     ;t<=T;t++)
     {
         scanf("%d",&n);
         printf("Case %d: ",t);
         )
         {
             ) printf("1\n");
             ) printf("4\n");
             ) printf("9\n");
             continue ;
         }
         tr.m=tr.n=;
         tr.a[][]=;
         tr.a[][]=tr.a[][]=tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr.a[][]=;
         tr=tr.getp(n-);
         mtr.m=;
         mtr.n=;
         mtr.a[][]=;
         mtr.a[][]=;
         mtr.a[][]=;
         mtr.a[][]=;
         tr=mtr*tr;
         printf(][]);
     }
     ;
 }

FZU1683 矩阵的更多相关文章

  1. C语言 · 矩阵乘法 · 算法训练

    问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...

  2. 获取Canvas当前坐标系矩阵

    前言 在我的另一篇博文 Canvas坐标系转换 中,我们知道了所有的平移缩放旋转操作都会影响到画布坐标系.那在我们对画布进行了一系列操作之后,怎么再知道当前矩阵数据状态呢. 具体代码 首先请看下面的一 ...

  3. CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换

    CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换 三维世界里的旋转(rotate),可以用一个3x3的矩阵描述:可以用(旋转角度float+旋转轴vec3)描述.数学家欧拉证明了这两种形式可 ...

  4. “为什么DirectX里表示三维坐标要建一个4*4的矩阵?”

    0x00 前言 首先要说明的是,本文的标题事实上来自于知乎上的一个同名问题:为什么directX里表示三维坐标要建一个4*4的矩阵? - 编程 .因此,正如Milo Yip大神所说的这个标题事实上是存 ...

  5. js实现蛇形矩阵

    参加腾讯前端实习生笔试,真的是被虐了千百遍,除了一条js程序题,其他半点前端都没有,都是考算法,计算机原理,数据结构.下面贴上腾讯笔试最后三大条中的一条,实现一个蛇形矩阵的输出.蛇形矩阵的什么样这里我 ...

  6. ACM 中 矩阵数据的预处理 && 求子矩阵元素和问题

            我们考虑一个$N\times M$的矩阵数据,若要对矩阵中的部分数据进行读取,比如求某个$a\times b$的子矩阵的元素和,通常我们可以想到$O(ab)$的遍历那个子矩阵,对它的各 ...

  7. PAT 1050. 螺旋矩阵(25)

    本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...

  8. [LeetCode] Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素

    Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...

  9. [LeetCode] Longest Increasing Path in a Matrix 矩阵中的最长递增路径

    Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...

随机推荐

  1. 如何进行shell脚本正确性测试

    在实际工作中,需要对shell脚本进行正确性测试. 如何用最快最有效的方式进行测试? 很多开发的习惯是,二话不说,写完/拿到,就跑一把,看看输入,输出,想要的操作是否完成,也就过了. 其实这是十分不严 ...

  2. Windows 调色板

    目录 第1章调色板    1 1.1 为什么要使用调色板    1 1.2 使用调色板    2 1.2.1 创建逻辑调色板    2 1.2.2 使用    3 1.2.3 销毁逻辑调色板    4 ...

  3. linux笔记:RPM软件包管理-yum在线管理

    ip地址配置: 用ifconfig命令只能配置ip和子网掩码,这样只能访问内网:如果需要访问公网则还必须要网关和DNS. 使用setup工具配置ip: 网络yum源配置: 常用yum命令:查询 常用y ...

  4. jQuery笔记一

    陆续更新中..... 1,创建标签的时候可以提前写好,以后用clone()方法克隆即可. 如: var div=$("<div></div>"); var ...

  5. eclipse导入git项目(转)

    1.首先在github.com上申请一个账号2.Eclipse需要安装egit插件,在Eclipse中选择help->Marketplace,在search中输入egit,找到后安装即可 3.从 ...

  6. jmeter 建立一个网络服务的测试计划

    如何创建一个 测试计划 测试一个网络服务. 你会 创建5个用户发送请求到一页. 同时,你会告诉用户运行测试两次. 的总数 请求用户请求(5)x(1)x(重复2次)= 10 HTTP请求. 来 建立测试 ...

  7. 安装Ubuntu Linux系统时硬盘分区最合理的方法

    无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为棘手的环节,网上的一些Ubuntu Linux安装教程一般都是自动分区,给初学者带来很大的不便,下面我就根据多年来在合 ...

  8. GitHub学习资料

    GitHub账户注册注册了有一年多了(Joined on 13 Apr 2015),一直以来都是本地命令行上传到内网的Git服务器Gitlab.最近正好在学习新的编程语言,所以当初荒废的GitHub想 ...

  9. [Java] 获取本月周次和日期时间段信息

    package com.wdcloud.monitoring.common; import java.text.SimpleDateFormat; import java.util.ArrayList ...

  10. jsp-------------之分页技术(一)

    jsp分页技术之: 如下图:百度的喵 看上图中卡哇伊的小苗的爪子下面的数字,就是分页啦!那我们如何做出这样一个效果呢? 下面我们来逐一分解: jsp分页技术一 :  (算法) /* int pageS ...