@root 继上次我TLE后,我勤学苦练114天,成功地由TLE变成了WA…
#include <cstdio>
long long f[100005];
long long fbnc(long long t) {
f[1] = 1;
f[2] = 1;
for (int i = 3; i <= t; i++) {
f[i] = f[i - 1] + f[i - 2];
}
return f[t];
}
int main() {
long long n, p;
scanf("%lld\n%lld", &n, &p);
printf("%lld\n", fbnc(n) % p);
return 0;
}
共 2 条回复
每次计算 f[i] 都要求余数,避免中间结果过大超出 long long int 的范围。
f[i] = f[i - 1] + f[i - 2];
改成f[i] = (f[i - 1] + f[i - 2]) % p;