HBC15967矩阵题解

惰性的成熟 算法基础篇 62 0
全网最全C++题库,助您快速提升编程技能!题库丰富多样,涵盖各个领域,让您在练习中不断成长!
给定两个巨大的方块矩阵A和B .请输出A x B 的运算结果,且时限只有 2s, 哈哈!对矩阵乘法的演进历史有些涉猎的人,应该能感受到在 某CPC 上出现这样的题目有多不合理, 为了使这个问题成为可能(?),我们将减小I / O大小, 现在,给定a,b,c,d的四个种子可以通过Xorshift随机数生成器生成输入矩阵, 这里是通过随机数生成器来产生矩阵的实现: uint32_t x, y, z, w;

给定两个巨大的方块矩阵A和B (行数高达 7000).请输出A x B 的运算结果,且时限只有 2s。 哈哈!对矩阵乘法的演进历史有些涉猎的人,应该能感受到在 某CPC 上出现这样的题目有多不合理。 为了使这个问题成为可能(?),我们将减小I / O大小。 现在,给定a,b,c,d的四个种子可以通过Xorshift随机数生成器生成输入矩阵。 这里是通过随机数生成器来产生矩阵的实现: uint32_t x, y, z, w; uint32_t xorshift() {     uint32_t t = x;     t ^= t << 11;     t ^= t >> 8;     x = y; y = z; z = w;     w ^= w >> 19;     w ^= t;     return w & ((1 << 24) - 1); } void getInputMatrix(     int n, uint32_t matrix[][7000],     uint32_t a, uint32_t b, uint32_t c, uint32_t d ) {     x = a; y = b; z = c; w = d;     for (int i = 0; i < n; ++i) {         for (int j = 0; j < n; ++j) {             matrix[i][j] = xorshift();         }     } } 另外,您应该将输出矩阵传递给哈希函数(hash function)。 我们会给你另一个数字p来做这件事。 这里是哈希函数的实现。 const int MOD = 1000000007; int hash(int n, long long matrix[][7000], int p) {     long long v = 0;     for (int i = 0; i < n; ++i) {         for (int j = 0; j < n; ++j) {             v *= p;             v += matrix[i][j];             v %= MOD;         }     }     return v; } P.S. 不懂 C++语法的同学们就抱歉啦~

HBC15967矩阵题解
-第1张图片-东莞河马信息技术
(图片来源网络,侵删)
不断学习,不断挑战,才能在编程领域中脱颖而出!全网最全C++题库,助您成为编程高手!

标签: HBC15967矩阵题解