HDU1575Tr A(矩阵相乘与快速幂)

Tr A  hdu1575

 

就是一个快速幂的应用:

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

复制代码
 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<algorithm>
 5 using namespace std;
 6 __int64 a[15][15],b[15][15],c[15][15];
 7 int n;
 8 int main()
 9 {
10     int t,i,j,m,k,d;
11     __int64 sum;
12     scanf("%d",&t);
13     while(t--)
14     {
15         scanf("%d%d",&n,&m);
16         for(i=0;i<n;i++)
17             for(j=0;j<n;j++)
18             {scanf("%I64d",&a[i][j]);b[i][j]=a[i][j];}
19         d=0;
20         while(m)
21         {
22             if(m%2&&d==0)//因为快速幂规定起始为1,则第一次就来要分开考虑!!
23             {
24                 for(i=0;i<n;i++)
25                     for(j=0;j<n;j++)
26                         a[i][j]=b[i][j];
27                 d=1;
28             }
29             else if(m%2)
30             {
31                 memset(c,0,sizeof(c));
32                 for(i=0;i<n;i++)
33                     for(j=0;j<n;j++)
34                     for(k=0;k<n;k++)
35                         c[i][j]+=a[i][k]*b[k][j]%9973;
36                 for(i=0;i<n;i++)
37                     for(j=0;j<n;j++)
38                         a[i][j]=c[i][j];
39             }
40             m=m/2;
41             memset(c,0,sizeof(c));
42     for(i=0;i<n;i++)
43         for(j=0;j<n;j++)
44         for(k=0;k<n;k++)
45             c[i][j]+=b[i][k]*b[k][j]%9973;
46     for(i=0;i<n;i++)
47         for(j=0;j<n;j++)
48             b[i][j]=c[i][j];
49         }
50         sum=0;
51         for(i=0;i<n;i++)
52             sum+=a[i][i];
53         printf("%I64d\n",sum%9973);
54     }
55     return 0;
56 }
复制代码

 

附上快速幂的模板:

复制代码
 1 __int64 power(__int64 p,__int64 n)  //反复平方法求(p^n)%mod
 2 {
 3     __int64 sq=1;
 4     while(n>0)
 5     {
 6         if(n%2)
 7             sq=(sq*p)%mod;
 8         n/=2;
 9         p=p*p%mod;
10     }
11     return sq;
12 }
复制代码

 

posted on   ~~碾压机  阅读(237)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理
点击右上角即可分享
微信分享提示