184 条题解
-
-1qig159357 LV 8 @ 2016-05-17 20:48:13
辣鸡题目,不要去重,否则挂掉三个点。
-
-12016-03-02 19:15:28@
五个点全wa.......求告知原因
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <math.h>using namespace std;
int ans = 0,n,k,a[25];
bool check(int x){
for(int i = 2;i <= sqrt(x);i ++){
if(!x % i) return 0;
}
return 1;
}void init(){
scanf("%d%d",&n,&k);
for(int i = 1;i <= n;i ++){
scanf("%d",&a[i]);
}
}void dfs(int cnt,int i,int sum){
if(i > n) return ;
if(cnt == k){
if(check(sum)) ans ++; return ;
}
dfs(cnt + 1,i + 1,sum + a[i]);
dfs(cnt,i + 1,sum);
}void solve(){
dfs(0,1,0);
printf("%d",ans);
}int main(){
init();
solve();
return 0;
} -
-12015-10-31 16:18:18@
一开始忘了要把freopen注释掉,得了WA。
第二次果断过。
这种题目提交两次也是醉了。代码
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[20],n,k;
long long ans=0;
int su(long long int m)
{
for(int i=2;i<sqrt(m);i++)
if(m%i==0) return 0;
return 1;
}
void dfs(int s,int ad,long long int t)
{
if(n-ad<k-s) return;
if(s>=k)
{
if(su(t)==1) ans++;
return;
}
for(int i=ad;i<n;i++)
dfs(s+1,i+1,t+a[i]);
return;
}
int main()
{
//freopen("choose.in","r",stdin);
//freopen("choose.out","w",stdout);
cin>>n>>k;
for(int i=0;i<n;i++)
cin>>a[i];
dfs(0,0,0);
cout<<ans<<endl;
return 0;
} -
-12015-07-29 21:25:27@
不会做啊,哎!!好难