1 条题解

  • 0
    @ 2025-10-8 16:50:41
    #include<bits/stdc++.h>
    using namespace std;
    int gcd(int x, int y){if(y==0)return x;return gcd(y, x%y);}
    int a[5100], b[5100];
    long long ans;
    int main()
    {
        int k, n, len;
        scanf("%d", &k);
        n = 0; len = 0;
        for(int i=1; i<=k; i++)
        {
            int x; scanf("%d", &x); n += x;
            for(int j=1; j<=x; j++) b[++len] = j;
        }
        for(int i=1; i<=n; i++) a[i] = i;
        ans = 1;
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=len; j++)
            {
                if(a[i] == 1) break;
                if(b[j] == 1) continue;
                int g = gcd(a[i], b[j]);
                a[i] /= g; b[j] /= g;
            }
            ans = ans * a[i] % 123123123;
        }
        printf("%lld\n", ans);
        return 0;
    }
    
    • 1

    *【组合数:可重复排列】可重复排列

    信息

    ID
    468
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    242
    已通过
    47
    上传者