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. PHP的字符串函数

      1.字符串的连接 字符串可以使用字符串连接符(.)来连接 常见的用途是建立大块的HTML字串代码,赋值号 (=) 连接符 (.) 可以被简写合并为 (.=) 符号 2.在字符串中使用变量 这个功能 ...

  2. Slight difference between C++ and C

    In C++, results of assignment operation, prefix increment and prefix decrement are all lvalues, the ...

  3. web测试方法总结

    链接地址:http://www.cnblogs.com/Jessy/p/3539638.html 一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~ ...

  4. Daily Scrum 12.15

    今日完成任务: 完成关于主页右侧资源显示的算法优化:解决了下载资源时的异常. 遇到困难: 编译课设这周要检查,小组成员的大部分时间在完成编译课设,时间很紧. 明日任务: 孙思权 完成第二组提供的数据库 ...

  5. Spring RestTemplate: 比httpClient更优雅的Restful URL访问, java HttpPost with header

    { "Author": "tomcat and jerry", "url":"http://www.cnblogs.com/tom ...

  6. javascript学习面向对象(二)

    主要内容: prototype扩展应用示例: 对比如下: 数组中forEach用法示例: 从上面示例可以看出,forEach只适合遍历一维数组: 应用prototype扩展实现全部元素遍历如下: 简单 ...

  7. [erlang]一次erlcron崩溃引起的事故分析

    事故背景 由于误操作在erlcron设置了一个超过3个月后的定时任务.然后第二天之后发现每天的daily reset没有被执行,一些定时任务也没有被执行.瞬间感觉整个人都不好了,怎么无端端就不执行了呢 ...

  8. .Net 对App.config和Web.config的访问操作(增、删、读、改)

    一.首先引用Configuration 1)App.config如下: using System.Configuration;//若果还没有Configuration,右键引用文件夹添加引用,在.NE ...

  9. POST 500 Internal Server Error

    今天调试公司web后台时发现一个POST 500 Internal Server Error的错误. 本来VS本地调试没有发现这个问题,然后发布到服务器时才出现了.然后找了好久没找到什么原因,再仔细在 ...

  10. Cracking-- 17.13 将二叉树转换成双向链表

    在书的105页 使用中根遍历的思想 left 之后 为 root 之后 为 right 则对左子树来说 left->right = root; root->left = left; 对右子 ...