矩阵快速幂(裸,模板)

来源:互联网 发布:淘宝蒙娜丽莎十字绣 编辑:程序博客网 时间:2024/05/16 01:20

题目来源:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1137
【题意】
中文题意不在叙述,只是让求一个矩阵的乘法而已。
【思路】
终于可以做矩阵快速幂的题了,这个专题一直被我拖到现在,作为一个弱弱内心无比难受,终于可以把它学了,十分开心。
此题非常裸,直接重载一个乘号运算符就可以了,只不过矩阵乘法要知道怎么回事。不知道的可以看下这位大佬的博客,知道的也就可以看下,加深理解:矩阵乘法
并且初始矩阵这个概念也要知道,这些可以看下大佬的矩阵快速幂视频
【代码】

#include<set>#include<map>#include<stack>#include<cmath>#include<queue>#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<limits.h>#include<algorithm>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int mod=1e9+7;typedef unsigned long long ll;typedef long long LL;const int N=100+10;LL n,m;struct mat{    LL a[N][N];};mat operator*(mat s,mat t){    mat r;    LL x;    mem(r.a,0);    for(int i=1; i<=n; i++)        for(int j=1; j<=n; j++)        {            x=0;            for(int k=1; k<=n; k++)                x+=(s.a[i][k]*t.a[k][j])%mod;            r.a[i][j]=x%mod;        }    return r;}void init(mat& s){    for(int i=1; i<=n; i++)        s.a[i][i]=1;}mat pow_quick(mat r){    mat ans;    init(ans);    while(m)    {        if(m&1)            ans=ans*r;        r=r*r;        m>>=1;    }    return ans;}int main(){    mat t;    scanf("%lld%lld",&n,&m);    for(int i=1; i<=n; i++)        for(int j=1; j<=n; j++)            scanf("%lld",&t.a[i][j]);    t=pow_quick(t);    for(int i=1; i<=n; i++)    {        printf("%lld",t.a[i][1]);        for(int j=2; j<=n; j++)            printf(" %lld",t.a[i][j]);        printf("\n");    }}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 客人快递拒收怎么办 惠添宝违约会怎么办 淘宝垃圾短信怎么办 退货运费险没退怎么办 fgo日文看不懂怎么办 宫颈成熟度不够怎么办 外卖小哥送错餐怎么办 ppt修改不了怎么办 win10软件乱码怎么办 win7软件乱码怎么办 手机卡暂时不用怎么办 信用卡暂时不用怎么办 blued下载不了怎么办 文件格式错误怎么办 错误码2611003怎么办 优惠券被天猫吞了怎么办 鞋子放鞋盒发霉怎么办 蘑菇街登不上怎么办 桑蚕丝衣服皱褶怎么办 羊毛衫会扎人怎么办 肌肉腿外翻怎么办 大腿赘肉怎么办 淘宝卖家不举证怎么办 咸鱼收到假货怎么办 伤没钱看病怎么办 steam付款失败怎么办 配偶没有公积金怎么办 玩吃鸡配置不够怎么办 华为AL20黑屏怎么办 华为照片不见了怎么办 电话卡暂停服务怎么办 电脑屏幕居中了怎么办 冰箱霜太多怎么办 qq账号忘了怎么办没有邮箱怎么办 车祸赔不起怎么办对方天天闹怎么办 专家解读有口臭怎么办口气重怎么办 油锅起火时应该怎么办或者怎么办 淘宝买了东西想改地址怎么办怎么办 手机显示程序异常这是怎么办怎么办 钢笔笔尖坏了怎么办 陶瓷刀钝了怎么办