求助大佬!
查看原帖
求助大佬!
359430
江户川コナン楼主2022/2/1 18:59

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e3+5;
int n;
bool cnt[maxn];
int f[maxn],lt[maxn],k=0;
signed main(){
    cin>>n;
    //cnt[0]=cnt[1]=true;
    for(int i=2;i<=n;i++){
        if(!cnt[i]){
            lt[++k]=i;
            //cout<<i<<" "; 
            int j=2*i;
            while(j<=n){
                cnt[j]=true;
                j+=i;
            }
            //f[i]=1;
        }
    }
    //cout<<endl;
    f[0]=1;
    //f[1]=0;
    for(int i=2;i<=n;i++){
        for(int j=1;j<=k&&lt[j]<i;j++){
            f[i]+=f[i-lt[j]];
            //printf("f[%lld]+=f[%lld],lt[%lld]=%lld,f[%lld]=%lld\n",i,i-lt[j],j,lt[j],i,f[i]);
        }
        if(!cnt[i]){
            f[i]/=2;
            f[i]+=1;
        }
        //cout<<i<<":"<<f[i]<<" ";
    }
    //cout<<endl;
    cout<<f[n]<<endl;
    return 0;
}

只对了第一个和第4个点,其他好像都炸了(虽然开了long long)

思路的话跟题解1差不多

2022/2/1 18:59
加载中...