[Luogu P2563]质数和分解
话不多说,这是一道质数题+完全背包。先预处理筛出质数,直接背包就行。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int pr[205],tot,x,f[205]; bool vis[205]; int main(){ for(int i=2;i<=200;++i){ if(!vis[i]){ pr[++tot]=i; for(int j=i+i;j<=200;j+=i)vis[j]=1; } } while(cin>>x){ memset(f,0,sizeof(f));f[0]=1; for(int i=1;i<=tot&&pr[i]<=x;++i){ for(int k=pr[i];k<=200;++k)f[k]+=f[k-pr[i]]; } cout<<f[x]<<endl; } return 0; }