8 条题解

  • -1
    @ 2023-9-10 10:40:28
    #include <iostream>
    #include<string.h>
    using namespace std;
    const int maxn=500;
    int c[maxn][maxn][101];
    int ans[maxn];
    void add(int x[],int y[],int z[]){
        z[0]=max(x[0],y[0])+1;
        for(int i=1;i<=z[0];i++){
            z[i]+=(x[i]+y[i]);
            z[i+1]+=z[i]/10;
            z[i]%=10;
        }
        while(z[0]>1&&z[z[0]]==0)z[0]--;
        return;
    }
    int main()
    {
        int i,j,n,m;
        cin>>i>>j>>n>>m;
        int s=max(i,n);
        c[0][0][0]=c[1][0][0]=c[1][1][0]=1;
        c[0][0][1]=c[1][0][1]=c[1][1][1]=1;
        for(int a=2;a<=s;a++){
            c[a][0][0]=c[a][a][0]=1;
            c[a][0][1]=c[a][a][1]=1;
            for(int b=1;b<a;b++){
                add(c[a-1][b-1],c[a-1][b],c[a][b]);
            }
        }
        add(c[i][j],c[n][m],ans);
        for(int i=ans[0];i>=1;i--)cout<<ans[i];
        return 0;
    }
    

    信息

    ID
    100
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    递交数
    802
    已通过
    81
    上传者