站外题求调
  • 板块灌水区
  • 楼主waters__god
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/6/10 15:43
  • 上次更新2023/10/23 13:29:11
查看原帖
站外题求调
549383
waters__god楼主2023/6/10 15:43

题目描述: 给定nn个整数,你需要求出有多少个从中选出kk个的方案,使得这个整数的和是质数。 两种方案被视为不同,当且仅当存在一个ii满足aia_i只在两种方案的一个中被选出。

输入: 第一行两个整数nn和kk,第二行nn个整数aia_i。

输出: 一行一个整数,表示从个nn整数中选出kk个数的和是质数的方案数。

wa code:

#include<bits/stdc++.h>
using namespace std;
int n,k,a[21],ans;
int pd(int x)
{
	for(int i=2;i<=sqrt(x);i++)
	if(x%i==0)
	return 0;
	return 1;
}
void dfs(int x,int sum)
{
	if(x==k+1 && pd(sum))
	{
		ans++;
		return ;
	}
	else
	{
		for(int i=x;i<=n;i++)
		dfs(x+1,sum+a[i]);
	}
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	dfs(1,0);
	cout<<ans;
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,k,a[21],ans;
int pd(int x)
{
	for(int i=2;i<=sqrt(x);i++)
	if(x%i==0)
	return 0;
	return 1;
}
void dfs(int x,int sum)
{
	if(x==k+1 && pd(sum))
	{
		ans++;
		return ;
	}
	else
	{
		for(int i=x;i<=n;i++)
		dfs(x+1,sum+a[i]);
	}
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	dfs(1,0);
	cout<<ans;
	return 0;
}

2023/6/10 15:43
加载中...