本題可以參考集合求數~~
分解成質數之和,所以首先得求素數。由於本題資料不大,打個暴力也行。由於可以分解為多個相同質數的和,所以本題是完全揹包。
f[i][j]表示前i個素數和為j的方案數,對於第i個素數,有取和不取兩種方案,本題有是求方案數,轉移方程就成了:f[i][j]=f[i-1][j]+f[i-1][j-w[i]] (w陣列從小到大存求得的素數)。
#include using namespace std;
int n,m,w[510];
bool a[510]={};
long long f[510][1010]={};//由於方案數較大,所以會超int
int main()
//素數存到w陣列裡
for (int i=1;i<=m;i++)
f[i][0]=1;
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
//dp完全揹包求方案數
coutint n,m,w[510];
bool a[510]={};
long long f[510]={};
int main()
f[0]=1;
for (int i=1;i<=m;i++)
for (int j=w[i];j<=n;j++)
f[j]+=f[j-w[i]];
cout《打**不能手殘~~~~~~
質數和分解 prime
問題描述 任何大於1的自然數n,都可以寫成若干個大於等於2且小於等於n的質數之和表示式 包 括只有乙個數構成的和表示式的情況 並且可能有不止一種質數和的形式。例如9的質數和 表示式就有四種本質不同的形式 9 2 5 2 2 3 2 2 3 3 3 2 7。這裡所謂兩個本質相同的表示式是指可以通過交換...
SSL P1197 質數和分解
求乙個數的質數和表示式,有多少種不同的方式。乍一看去,好像比較麻煩,貌似需要每個表示式都要列舉再統計。但只要冷靜分析,其實不難發現其實 就只是乙個完全揹包 每個質數都沒有限制 所以其實整個程式只要由素篩 素數篩選法 完全揹包的 套 路即可。include includeusing namespace...
197 階乘分解(質數)
階乘分解 給定整數 n 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci 即可。輸入格式 乙個整數n。輸出格式 n 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pcii項。按照pi從小到大的順序輸出。資料範圍 1 n 106 輸入樣例 5輸出樣例 2 3...