1 条题解

  • 0
    @ 2026-6-3 16:00:18

    #include #include using namespace std;

    string add(const string &a,const string &b) { string res=""; int carry=0,i=a.size()-1,j=b.size()-1; while(i>=0||j>=0||carry){ int sum= carry; if(i>=0) sum+=a[i--]-'0'; if(j>=0) sum+=b[j--]-'0'; carry=sum/10; res = static_cast(sum%10+'0') +res; }

    return  res;
    

    }

    int main() {

    string dp[4][101]={};
    
    dp[1][1]="1";
    dp[1][2]="1";
    dp[1][3]="2";
    dp[2][2]="1";
    dp[2][3]="1";
    dp[3][3]="1";
    
    for(int j=4;j<=100;j++){
    	dp[1][j]= add( add(dp[1][j-1],dp[2][j-1]),dp[3][j-1] );
    	dp[2][j]= add( add(dp[1][j-2],dp[2][j-2]),dp[3][j-2] );
    	dp[3][j]= add( add(dp[1][j-3],dp[2][j-3]),dp[3][j-3] );	
    }
    int n;
    cin>>n;
    cout<<add( add(dp[1][n],dp[2][n]),dp[3][n] )<<endl;
    
    
    
    
    return 0;
    

    }

    • 1

    信息

    ID
    1154
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    25
    已通过
    8
    上传者