題目背景 ·題目名稱是吸引你點進來的 ·實際上該題還是很水的 題目描述 ·1+1=? 顯然是2 ·a+b=? 1001回看不謝 ·哥德巴赫猜想 似乎已呈泛濫趨勢 ·以上純屬個人吐槽 ·給定一個正整數n,求將其分解成若幹個素數之和的方案總數。 輸入輸出格式 輸入格式: 一行:一個正整數n 輸出格式: ...
題目背景
·題目名稱是吸引你點進來的
·實際上該題還是很水的
題目描述
·1+1=? 顯然是2
·a+b=? 1001回看不謝
·哥德巴赫猜想 似乎已呈泛濫趨勢
·以上純屬個人吐槽
·給定一個正整數n,求將其分解成若幹個素數之和的方案總數。
輸入輸出格式
輸入格式:一行:一個正整數n
輸出格式:一行:一個整數表示方案總數
輸入輸出樣例
輸入樣例#1:7輸出樣例#1:
3
說明
【樣例解釋】
7=7 7=2+5
7=2+2+3
【福利數據】
【輸入】 20
【輸出】 26
【數據範圍及約定】
對於30%的數據 1<=n<=10
對於100%的數據,1<=n<=10^3
生成一個素數表,
然後暴力求解
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #define lli long long int 6 using namespace std; 7 const int MAXN=100001; 8 lli vis[MAXN]; 9 lli dp[MAXN]; 10 int main() 11 { 12 lli n,q; 13 cin>>n; 14 dp[0]=1; 15 vis[1]=1; 16 for(lli i=2;i<=sqrt(n);i++) 17 { 18 if(vis[i]==0) 19 for(lli j=i*i;j<=n;j=j+i) 20 vis[j]=1; 21 } 22 for(lli i=2;i<=n;i++) 23 if(vis[i]==0) 24 for(lli j=i;j<=n;j++) 25 dp[j]+=dp[j-i]; 26 cout<<dp[n]; 27 return 0; 28 }