dfs 0分

P1036 [NOIP2002 普及组] 选数

``` #include <bits/stdc++.h> using namespace std; int n,m,a[10001],vis[10001],s=0; void is_prime() { long long sum=0; for(int i=1;i<=m;i++) { sum+=a[i]; } for(int i=2;i<=sqrt(sum);i++) { if(sum%i==0) return; } s++; } void dfs(int step){ for(int i=a[step-1]+1;i<=n;i++) { a[step]=i; if(step==m&&vis[i]==0) { is_prime(); } else if(step!=m&&vis[i]==0) { vis[i]=1; dfs(step+1); vis[i]=0; } } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; } dfs(1); cout<<s; }
by lcy0506 @ 2024-02-15 20:29:27


订正后的 17分
by lcy0506 @ 2024-02-15 20:30:28


|