0%

除零错误——INTEGER_DIVIDE_BY_ZERO

常见错误之除零错误。

https://acm.hdu.edu.cn/contest/view-code?cid=1199&rid=17130

image

一般来说,只要除数不是一个简单的,一个变量,都要担心这个除 0 错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void gen_eraly_seg() {
for (int i = 1; i <= N; ++i) {
ll early_sz;
if (i == 1) {
early_sz = K - (bound_win + K - 1) / K;
} else {
if (early_sz_ls[i - 1] - K == 0) {
early_sz = K;
} else {
// 这里这个除法要小心除 0 错误。
early_sz = (bound_win - K * K) / (early_sz_ls[i - 1] - K);
}
}
early_sz = min(early_sz, K);
early_sz_ls[i] = early_sz;
for (int j = 1; j <= early_sz; ++j) {
ans_mat[i][j] = idx;
}
if (early_sz != 0) {
++idx;
}
}
}