1 条题解

  • 0
    @ 2025-10-8 16:51:57
    #include <bits/stdc++.h>
    using namespace std;
    long long f[1100];
    int a[500];
    bool pd(int x)
    {
        if(x < 2)return 0;
        int t = sqrt(x + 1);
        for(int i = 2; i <= t; i++)if(x % i == 0)return 0;
        return 1;
    }
    int main()
    {
        int n;scanf("%d", &n);
        int k = 0;for(int i = 2; i <= n; i++)if(pd(i) == 1)a[++k] = i;
        memset(f, 0, sizeof(f));f[0] = 1;
        for(int i = 1; i <= k; i++)
        {
            for(int j = a[i]; j <= n; j++)
            {
                f[j] += f[j - a[i]];
            }
        }
        printf("%lld\n", f[n]);
        return 0;
    }
    
    • 1

    *【背包:方案数填满型完全背包】素数分解

    信息

    ID
    724
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    235
    已通过
    67
    上传者