da

罗迎甲  •  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; 
}


评论: