罗迎甲 • 12天前
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
long long a[41] = {0, 1, 2, 4}; // 初始化前4项(索引0~3)
int n;
long long q = 0;
cin >> n;
// 限制n的范围,避免数组越界
if (n==0) { // 因为i+1最大为n+1 ≤40 → n≤39,留一点余量
cout<<0;
return 0;
}
else{
// 从i=3开始递推(确保i-2≥1,避免访问a[-1])
for (int i = 4; i <=n; i++) {
a[i] = a[i-3] + a[i-1] + a[i-2]; // 递推公式:当前项=前三项之和
}
cout << a[n];
}
return 0;
}
评论: