LZOI2021 题解
__cheems__ · · 个人记录
题意
将
思路
先筛出
#include<bits/stdc++.h>
using namespace std;
int V,n;
int a[100001];
int dp[100001];
bool check(int x){
for(int i=2;i*i<=x;i++){
if(x%i==0) return 0;
}
return 1;
}
int main(){
dp[0]=1;
cin>>V;
for(int i=2;i<=V;i++){
if(check(i)){
n++;
a[n]=i;
}
}
for(int i=1;i<=n;i++){
for(int j=a[i];j<=V;j++){
dp[j]+=dp[j-a[i]];
}
}
cout<<dp[V]<<endl;
return 0;
}