HDU1575Tr A(矩阵相乘与快速幂)
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(矩阵相乘与快速幂)的更多相关文章
- Luogu 3390 【模板】矩阵快速幂 (矩阵乘法,快速幂)
Luogu 3390 [模板]矩阵快速幂 (矩阵乘法,快速幂) Description 给定n*n的矩阵A,求A^k Input 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵 ...
- Luogu T7152 细胞(递推,矩阵乘法,快速幂)
Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ...
- poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)
Cow Relays Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7825 Accepted: 3068 Descri ...
- bzoj 3240: [Noi2013]矩阵游戏 矩阵乘法+十进制快速幂+常数优化
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 613 Solved: 256[Submit][Status] ...
- 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)* ...
- HDU4965 Fast Matrix Calculation —— 矩阵乘法、快速幂
题目链接:https://vjudge.net/problem/HDU-4965 Fast Matrix Calculation Time Limit: 2000/1000 MS (Java/Othe ...
- BZOJ-3231 递归数列 矩阵连乘+快速幂
题不是很难,但是啊,人很傻啊...机子也很鬼畜啊... 3231: [Sdoi2008]递归数列 Time Limit: 1 Sec Memory Limit: 256 MB Submit: 569 ...
- 【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的 ...
- BZOJ_1009_[HNOI2008]_GT考试_(动态规划+kmp+矩阵乘法优化+快速幂)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1009 字符串全部由0~9组成,给出一个串s,求一个长度为n的串,不包含s的种类有多少. 分析 ...
随机推荐
- june 14
Thank you for your applying for employment with our company. Your application is now being processed ...
- 使用 Sandcastle 生成代码帮助文档
使用 Sandcastle可以生成MSDN风格的帮助文档,生成的帮助文档既可以是chm文档,也可以是MS Help 2.x帮助文档. 1 下载并安装Sandcastle Sandcastle下载地址为 ...
- python函数动态参数详解
Python的动态参数: 1,参数前一个"*":在函数中会把传的参数转成一个元组. def func (*args): print(args) func(123,1,2,'a') ...
- hdu 5876 (补图BFS) Sparse Graph
题目:这里 题意: 相当于一开始给一个初始好了的无向完全图给你,然后给让你删除m条边,再给你一个点v,最后问你在剩下的图里从这个点v出发能到达所有边点的最小路径是多少? 一看是所有点的最小路径,一看就 ...
- ip地址合法性
/* * Java语法上正则化表达式的使用技巧,对于'.'要用'\\.' (2)注意空字符串“”和null的区别,判断一个字符串是不是空字符串用.equals("") * (1,判 ...
- 快速排序 - C语言
看了这本<数据结构与算法分析>中的快速排序. 写下自己理解后的代码,以备后用. #include "stdio.h" void insertSort(int arr[] ...
- html总集
3.1清单格式:<ul> <li>...</li></ul><li>的属性:type disc 实心圆(默认) circle 空心圆 squ ...
- Web程序的运行原理及流程(一)
自己做Web程序的开发也有两年多了 从最开始跟风学框架 到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来 我当时第一次做WEB项目看 ...
- 第三次作业——《K米评测》
第三次作业--<K米评测> 一.调研.评测 上手体验 APP的图标做的不错,一眼就知道和KTV唱歌相关的 点进去就是连接包箱的界面和直播界面,把软件最重要的两个功能展示出来了,一目了然 热 ...
- cocoapods specs 镜像
在使用cocoapods 进行update 或者 install的时候 每次回去更新获取的pod specs,每次速度都不是很理想,博主最近对github上的specs仓库进行了镜像,分别在gitca ...