给我一个由两个部分组成的输入,第一行由两个数字组成,表示矩阵的大小,N和M,然后是矩阵本身,A。矩阵的最大大小是1 <= N, M <= 100,矩阵的每个元素都是0 <= A[i][j] <= pow(10, 9)。“散列”是通过在每一列中添加元素并乘以所有和,即模1000000007 (pow(10, 9) + 7)来计算的。
我的代码如下:
#include <stdio.h>
int main() {
int rows, cols;
scanf("%d %d", &rows, &cols); getchar();
unsigned long long int data[rows][cols];
for (int row = 0; row < rows; row++) {
for (int col = 0; col < cols; col++) {
scanf("%llu", &data[row][col]);
}
getchar();
}
unsigned long long int coltot[cols];
for(int i=0;i<cols;i++){coltot[i]=0;}
for (int row = 0; row < rows; row++) {
for (int col = 0; col < cols; col++) {
coltot[col] += data[row][col];
}
}
unsigned long long int colmult, colmulttemp = (coltot[0] % 1000000007);
for (int i = 1; i < cols; i++) {
colmulttemp *= coltot[i];
colmulttemp %= 1000000007;
}
colmult = colmulttemp;
printf("%llu\n", colmult);
return 0;
}然而,在提交时,我得到的结果表明一些测试用例失败了。这个问题只给出了以下测试用例:
stdin:
2 2
1 5
1 5
stdout:
20
stdin:
3 3
1 4 7
2 5 8
3 6 9
stdout:
2160我的代码是正确通过的。但是,我尽力尝试输入最大值。我编写了一个程序,将1000000000水平打印100次,垂直打印100次到文本文件中。但是,在导入文件时,我得到了一个总线错误:
$ ./main < data.txt
Bus error (core dumped)
$这可能是一些测试用例失败的原因吗?还是其他地方的问题?不管怎么说,我该怎么解决呢?
谢谢您抽时间见我。
更新:我发现了总线错误的问题:我在生成矩阵时忘记指定矩阵的大小。它现在起作用了,但我发现它生成的结果与python3程序不同,C程序返回213129341,而python3程序返回991047043。
>>> import math
>>> x = pow(10, 9)
>>> xx = x * 100
>>> m = x + 7
>>> r = x
>>> i = 1
>>> while(i < 100):
... i += 1
... r = r * xx
... r = r % m
...
>>> r
991047043
>>> r % m
991047043
>>>不幸的是,这仍然不能让我更好地理解为什么我的代码是不正确的。有什么想法吗?
谢谢您抽时间见我。
发布于 2020-10-28 08:03:28
,这可能是一些测试用例失败的原因吗?
是。
https://stackoverflow.com/questions/64567301
复制相似问题