1 条题解

  • 2
    @ 2023-8-18 16:59:32
    #include<iostream>
    using namespace std;
    int n,ans;
    int a[205];
    bool prime(int n)
    {
    	if(n==1)
    		return 0;
    	for(int i=2; i*i<=n; i++)
    	{
    		if(n%i==0)
    		{
    			return 0;
    		}
    	}
    	return 1;
    }
    void search(int s,int step)
    {
    	for(int i=2; i<=s; i++)
    	{
    		if(prime(i)&&i>a[step-1])
    		{
    			a[step]=i;
    			if(s-a[step]==0)
    			{
    				ans=max(ans,step);
    			}
    			else
    			{
    				search(s-a[step],step+1);
    			}
    		}
    	}
    }
    int main()
    {
    	cin>>n;
    	search(n,1);
    	cout<<ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    376
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    52
    已通过
    28
    上传者