Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
129062 | 罗迎甲 | 上台阶 | C++ | Accepted | 1 MS | 272 KB | 664 | 2025-08-21 16:48:31 |
#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; }