1 条题解

  • 0
    @ 2025-10-8 16:50:53
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110,M=1e6+10;
    int n,m,A[N],B[N]; 
    unsigned long long C[M], ans[M];
    void calc()
    {
        memset(C,0,sizeof(C));for(int i=0;i<=A[1]*B[1];i+=A[1])C[i]=1;
        for(int k=2;k<=n;k++)
        {
            memset(ans,0,sizeof(ans));
            for(int i=0;i<=m;i++)
                for(int j=0;j<=A[k]*B[k] && (i+j<=m);j+=A[k])
                    ans[i+j]+=C[i];
            memcpy(C,ans,sizeof(ans));
        }
        int x=0;while(C[x])x++;
        printf("%d\n",x);
    }
    int main()
    {
        scanf("%d",&n);m=0;
        for(int i=1;i<=n;i++)scanf("%d%d", &A[i], &B[i]),m+=B[i]*A[i];
        calc();
        return 0;
    }
    
    • 1

    *【组合数:普通生成函数】不能组成的最小面值[scy]

    信息

    ID
    502
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    127
    已通过
    29
    上传者