求助,感觉与第一篇题解做法没啥不一样的
查看原帖
求助,感觉与第一篇题解做法没啥不一样的
517637
瀛洲仙子楼主2023/12/13 15:57
#include<bits/stdc++.h>
using namespace std;
typedef long long lld;
vector<int>prime;
lld dp[1005];
bool pri(int x)
{
    if(x<=1)return false;
    if(x==2 or x==3)return false;
    if(x%6!=1 and x%6!=5)
        return false;
    for(int i=2;i*i<=x;++i)
        if(x%i==0)return false;
    return true;
}
int main()
{
    int n;cin>>n;dp[0]=1;
    for(int i=1;i<=1000;++i)
        if(pri(i))prime.push_back(i);
    for(int i=0;i<prime.size();++i)
        for(int j=prime[i];j<=n;++j)
            dp[j]+=dp[j-prime[i]];
    cout<<dp[n];
}
2023/12/13 15:57
加载中...