Tr A hdu1575

就是一个快速幂的应用:

只要知道怎么求矩阵相乘!!(比赛就知道会超时,就是没想到快速幂!!!)

 #include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
__int64 a[][],b[][],c[][];
int n;
int main()
{
int t,i,j,m,k,d;
__int64 sum;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(i=;i<n;i++)
for(j=;j<n;j++)
{scanf("%I64d",&a[i][j]);b[i][j]=a[i][j];}
d=;
while(m)
{
if(m%&&d==)//因为快速幂规定起始为1,则第一次就来要分开考虑!!
{
for(i=;i<n;i++)
for(j=;j<n;j++)
a[i][j]=b[i][j];
d=;
}
else if(m%)
{
memset(c,,sizeof(c));
for(i=;i<n;i++)
for(j=;j<n;j++)
for(k=;k<n;k++)
c[i][j]+=a[i][k]*b[k][j]%;
for(i=;i<n;i++)
for(j=;j<n;j++)
a[i][j]=c[i][j];
}
m=m/;
memset(c,,sizeof(c));
for(i=;i<n;i++)
for(j=;j<n;j++)
for(k=;k<n;k++)
c[i][j]+=b[i][k]*b[k][j]%;
for(i=;i<n;i++)
for(j=;j<n;j++)
b[i][j]=c[i][j];
}
sum=;
for(i=;i<n;i++)
sum+=a[i][i];
printf("%I64d\n",sum%);
}
return ;
}

附上快速幂的模板:

 __int64 power(__int64 p,__int64 n)  //反复平方法求(p^n)%mod
{
__int64 sq=;
while(n>)
{
if(n%)
sq=(sq*p)%mod;
n/=;
p=p*p%mod;
}
return sq;
}

HDU1575Tr A(矩阵相乘与快速幂)的更多相关文章

  1. Luogu 3390 【模板】矩阵快速幂 (矩阵乘法,快速幂)

    Luogu 3390 [模板]矩阵快速幂 (矩阵乘法,快速幂) Description 给定n*n的矩阵A,求A^k Input 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵 ...

  2. Luogu T7152 细胞(递推,矩阵乘法,快速幂)

    Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ...

  3. poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)

    Cow Relays Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7825   Accepted: 3068 Descri ...

  4. bzoj 3240: [Noi2013]矩阵游戏 矩阵乘法+十进制快速幂+常数优化

    3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 613  Solved: 256[Submit][Status] ...

  5. bzoj 3240 矩阵乘法+十进制快速幂

    首先,构造出从f[][i]->f[][i+1]的转移矩阵a,和从f[i][m]->f[i+1][1]的转移矩阵b, 那么从f[1][1]转移到f[n][m]就是init*(a^(m-1)* ...

  6. HDU4965 Fast Matrix Calculation —— 矩阵乘法、快速幂

    题目链接:https://vjudge.net/problem/HDU-4965 Fast Matrix Calculation Time Limit: 2000/1000 MS (Java/Othe ...

  7. BZOJ-3231 递归数列 矩阵连乘+快速幂

    题不是很难,但是啊,人很傻啊...机子也很鬼畜啊... 3231: [Sdoi2008]递归数列 Time Limit: 1 Sec Memory Limit: 256 MB Submit: 569 ...

  8. 【HDOJ5950】Recursive sequence(矩阵乘法,快速幂)

    题意:f[1]=a,f[2]=b,f[i]=2f[i-2]+f[i-1]+i^4(i>=3),多组询问求f[n]对2147493647取模 N,a,b < 2^31 思路:重点在于i^4的 ...

  9. BZOJ_1009_[HNOI2008]_GT考试_(动态规划+kmp+矩阵乘法优化+快速幂)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1009 字符串全部由0~9组成,给出一个串s,求一个长度为n的串,不包含s的种类有多少. 分析 ...

随机推荐

  1. Android Studio 出现Failed to open zip file的问题

    修改gradle . 首先我们打开setting搜索gradle.我们可以从该界面上看到gradle的版本.

  2. php入门,配置wampserver

    wamp安装过程中将网站的根目录设置在www目录下,这里记录如何定义自己的根目录,以便以后需要是查看 1.启动wampserver,左键选择apache下的httpd.conf,将文件中Documen ...

  3. Windows XP SP3下成功编译CUint2.1-3

    软件环境:Visual C++ 6.0 操作系统:Windows XP SP3 从sourceforge.net下载CUint-2.1-3.tar.bz解压出目录CUnit-2.1-3 从CUint打 ...

  4. 匿名函数 lambda表达式(lambda expression)

    阅读g2log时,发现有两行代码居然看不懂. 1. auto bg_call =  [this, log_directory]() {return pimpl_->backgroundChang ...

  5. JVM常量池

    常量池(constant_pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.它包括了关于类.方法.接口等中的常量,也包括字符串常量和符号引用.运行时常量池是方法区的一部分 ...

  6. [LeetCode][Java]Candy@LeetCode

    Candy There are N children standing in a line. Each child is assigned a rating value. You are giving ...

  7. mac iterm2配置

    iterm2的配置分为如下几个部分: 1. 字体大小的配置: iTerm->Preferences->Profiles->Text->Regular Font: 我在这里设置成 ...

  8. 使用TFS 自动编译时的一点设置

    MSBuild参数:  /p:VisualStudioVersion=10.0 指定使用的VS编译版本

  9. vs2015 无法启动IIS Express Web服务器

    今天在VS2015上装了 之后无法启动IIS Express Web服务器. 然后我去查看了windows日志发现vs创建的虚拟目录不见了(至于是不是以上原因导致的没去查明) 然后在vs2015中点击 ...

  10. CAD 二次开发--属性块

    1.属性块的定义 属性块是有构成的实体和附加信息(属性)组成的,属性块中块的定义与简单块中块的定义一样,而属性的定义主要是通过属性的AttributeDefinition类的有关属性和函数来实现的.具 ...