专栏文章
题解:P1036 [NOIP 2002 普及组] 选数
P1036题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miq5808x
- 此快照首次捕获于
- 2025/12/03 23:09 3 个月前
- 此快照最后确认于
- 2025/12/03 23:09 3 个月前
[NOIP 2002 普及组] 选数
题目传送门
思路:
用深搜枚举所有合法是组合,统计结果是素数的个数,最后输出。
Coding:
CPP#include <bits/stdc++.h>
using namespace std;
int n;
int a[21];
int k;
int num;
void dfs(int now,int id,int ans)
{
if(now==k+1) //满足条件
{
bool f=true;
for(int i=2;i*i<=ans;i++)
if(ans%i==0)
{
f=false;
break;
}
if(f==true) //判断是否是素数
num++;
}
else if(id<=n)
for(int i=id;i<=n;i++)
dfs(now+1,i+1,ans+a[i]); //搜索所有组合
}
int main( ){
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
dfs(1,1,0);
cout<<num; //输出方案数
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...