假设$C=AB$, 那么答案就为

$\begin{align} \notag ans & =\sum\limits_{i=0}^{n-1}\sum\limits_{j=0}^{n-1}C[i][j]p^{(n-i)n-1-j} \\ \notag & =  \sum\limits_{i=0}^{n-1}\sum\limits_{j=0}^{n-1}\sum\limits_{k=0}^{n-1}A[i][k]B[k][j]p^{(n-i)n-1-j} \\ & = \sum\limits_{k=0}^{n-1}\Big(\sum\limits_{i=0}^{n-1}A[i][k]p^{(n-i)n-1}\Big)\Big(\sum\limits_{j=0}^{n-1}B[k][j]p^{-j}\Big) \notag \end{align}$

  1. #include <iostream>
  2. #include <sstream>
  3. #include <algorithm>
  4. #include <cstdio>
  5. #include <math.h>
  6. #include <set>
  7. #include <map>
  8. #include <queue>
  9. #include <string>
  10. #include <string.h>
  11. #include <bitset>
  12. #define REP(i,a,n) for(int i=a;i<=n;++i)
  13. #define PER(i,a,n) for(int i=n;i>=a;--i)
  14. #define hr putchar(10)
  15. #define pb push_back
  16. #define lc (o<<1)
  17. #define rc (lc|1)
  18. #define mid ((l+r)>>1)
  19. #define ls lc,l,mid
  20. #define rs rc,mid+1,r
  21. #define x first
  22. #define y second
  23. #define io std::ios::sync_with_stdio(false)
  24. #define endl '\n'
  25. #define DB(a) ({REP(__i,1,n) cout<<a[__i]<<' ';hr;})
  26. using namespace std;
  27. typedef long long ll;
  28. typedef pair<int,int> pii;
  29. const int P = 1e9+7, P2 = 998244353, INF = 0x3f3f3f3f;
  30. ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
  31. ll qpow(ll a,ll n) {ll r=1%P;for (a%=P;n;a=a*a%P,n>>=1)if(n&1)r=r*a%P;return r;}
  32. ll inv(ll x){return x<=1?1:inv(P%x)*(P-P/x)%P;}
  33. inline int rd() {int x=0;char p=getchar();while(p<'0'||p>'9')p=getchar();while(p>='0'&&p<='9')x=x*10+p-'0',p=getchar();return x;}
  34. //head
  35.  
  36. int n, Aa, Ab, Ac, Ad, Ba, Bb, Bc, Bd, p;
  37. uint32_t x, y, z, w;
  38. uint32_t xorshift() {
  39. uint32_t t = x;
  40. t ^= t << 11;
  41. t ^= t >> 8;
  42. x = y; y = z; z = w;
  43. w ^= w >> 19;
  44. w ^= t;
  45. return w & ((1 << 24) - 1);
  46. }
  47. void get(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
  48. x = a; y = b; z = c; w = d;
  49. }
  50.  
  51. const int N = 7e3+10;
  52. int f1[N], f2[N], g1[N], g2[N];
  53. int main() {
  54. scanf("%d%d%d%d%d%d%d%d%d%d", &n, &Aa, &Ab, &Ac, &Ad, &Ba, &Bb, &Bc, &Bd, &p);
  55. int w1 = inv(qpow(p,n)), w2 = inv(p);
  56. int r1 = qpow(p,n*n-1), r2 = 1;
  57. REP(i,0,n-1) {
  58. f1[i]=r1,r1=(ll)r1*w1%P;
  59. f2[i]=r2,r2=(ll)r2*w2%P;
  60. }
  61. get(Aa,Ab,Ac,Ad);
  62. REP(i,0,n-1) REP(j,0,n-1) {
  63. g1[j] = (g1[j]+(ll)xorshift()*f1[i])%P;
  64. }
  65. get(Ba,Bb,Bc,Bd);
  66. REP(i,0,n-1) REP(j,0,n-1) {
  67. g2[i] = (g2[i]+(ll)xorshift()*f2[j])%P;
  68. }
  69. int ans = 0;
  70. REP(i,0,n-1) ans = (ans+(ll)g1[i]*g2[i])%P;
  71. if (ans<0) ans += P;
  72. printf("%d\n", ans);
  73. }

牛客 110D 矩阵的更多相关文章

  1. 牛客网挑战赛19 B,C,F

    链接:https://www.nowcoder.com/acm/contest/131/B来源:牛客网 矩阵 M 包含 R 行 C 列,第 i 行第 j 列的值为 Mi,j. 请寻找一个子矩阵,使得这 ...

  2. 牛客练习赛1 A - 矩阵

    链接:https://www.nowcoder.com/acm/contest/2/A来源:牛客网 题目描述 给出一个n * m的矩阵.让你从中发现一个最大的正方形.使得这样子的正方形在矩阵中出现了至 ...

  3. 牛客小白月赛16 E 小雨的矩阵 ( 暴搜)

    链接:https://ac.nowcoder.com/acm/contest/949/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  4. 顺时针打印矩阵 牛客网 剑指Offer

    顺时针打印矩阵 牛客网 剑指Offer 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 ...

  5. 矩阵中的路径 牛客网 剑指Offer

    矩阵中的路径 牛客网 剑指Offer 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下 ...

  6. 2018牛客网暑期ACM多校训练营(第二场)J Farm(树状数组)

    题意 n*m的农场有若干种不同种类作物,如果作物接受了不同种类的肥料就会枯萎.现在进行t次施肥,每次对一个矩形区域施某种类的肥料.问最后枯萎的作物是多少. 分析 作者:xseventh链接:https ...

  7. 2018牛客网暑期ACM多校训练营(第一场)B Symmetric Matrix(思维+数列递推)

    题意 给出一个矩阵,矩阵每行的和必须为2,且是一个主对称矩阵.问你大小为n的这样的合法矩阵有多少个. 分析 作者:美食不可负064链接:https://www.nowcoder.com/discuss ...

  8. 牛客OI赛制测试赛2

    A题: https://www.nowcoder.com/acm/contest/185/A 链接:https://www.nowcoder.com/acm/contest/185/A来源:牛客网 题 ...

  9. 【转自牛客网】C++类职位校招

    作者:./a.out链接:https://www.nowcoder.com/discuss/14022来源:牛客网 话说在牛客网上混迹了半年,也没啥拿的出手的贡献.现在基本上自己的校招生涯要告一段落, ...

随机推荐

  1. iptables 有关计算机名解析问题

    遇到一奇怪现象: 1.开启防火墙(iptables)所有的用计算机名解析的连接全部是失效,但是用IP的一切正常.ping计算机名不通.但是ping IP地址一切OK: 2.关闭防火墙(iptables ...

  2. Oracle数据库本地和远程导入、导出

    exp本地导出与imp本地导入 exp命令: 1 exp username/psw@TEST file=d:test.dmp full=y 2 exp username/psw@TEST file=d ...

  3. sql语句中where 1=1和 0=1 的作用

    sql where 1=1和 0=1 的作用   where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where  1=1  在多条件查询中的 ...

  4. Redis 4.x RCE 复现学习

    攻击场景: 能够访问远程redis的端口(直接访问或者SSRF) 对redis服务器可以访问到的另一台服务器有控制权 实际上就是通过主从特性来 同步传输数据,同时利用模块加载来加载恶意的用来进行命令执 ...

  5. koa 项目实战(七)登录接口

    1.登录接口 /** * @route POST api/users/login * @desc 登录接口地址 * @access 接口是公开的 */ router.post('/login', as ...

  6. 浅谈WebView在新窗口浏览网页(setSupportMultipleWindows()与onCreateWindow()关系)

    一,写在前面 我们平常使用电脑浏览器浏览网页可能会有三种方式: 1.新窗口 2.当前窗口种的新选项卡 3.当前选项卡或者窗口 我们知道在电脑系统中同一时间可以开启多个相同的进程,就像你可以同时登陆2个 ...

  7. C# List中的ForEach

    ; List<string> aaa = new List<string>(){ "aaa", "bbb" }; aaa.ForEach ...

  8. UML 2.5版本与UML分类概述

    UML 2.5版本与UML分类概述 转 http://www.umlstudy.com/uml-25-diagrams.html UML简述 UML图是设计.实现或已经存在的系统模型的部分图形表示(视 ...

  9. C++代码匈牙利命名规范

    一.类 除了异常类等个别情况(不希望用户把该类看作一个普通的.正常的类之情况)外,C++类/结构的命名应该遵循以下准则: C++类的命名    类的名称都要以大写字母“C”开头,后跟一个或多个单词.为 ...

  10. kafka整合springboot

    1.pom.xml添加依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifa ...