对每项求模,这个代码计算前面对,后面结果不对
这段代码中存在一个问题,即在计算第n项时,对前面项的值没有进行取模操作,导致可能出现溢出或错误的结果。应该在每次计算n3时都对结果进行取模操作,而不仅仅是在返回结果时才进行取模。以下是修改后的代码:
#include <stdio.h>
#include <math.h>
int lml(int n) {
int n1 = 0, n2 = 1, n3;
for (int i = 3; i <= n; i++) {
n3 = (4 * n2 - 5 * n1) % 998244353;
n1 = n2;
n2 = n3;
}
return n3;
}
int main() {
int T;
scanf("%d", &T);
for (int i = 1; i <= T; i++) {
int num;
scanf("%d", &num);
printf("%d\n", (lml(num) + 998244353) % 998244353);
}
return 0;
}
这样修改后的代码在计算每一项时都会对结果进行取模操作,保证了结果的正确性。
页:
[1]