• NOIP2002普及组复赛B 选数


    题目链接:https://ac.nowcoder.com/acm/contest/230/B

    题目大意:

      略

    分析:

      DFS模板题。

    代码如下:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3  
     4 #define rep(i,n) for (int i = 0; i < (n); ++i)
     5 #define For(i,s,t) for (int i = (s); i <= (t); ++i)
     6 #define rFor(i,t,s) for (int i = (t); i >= (s); --i)
     7 #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)
     8 #define rforeach(i,c) for (__typeof(c.rbegin()) i = c.rbegin(); i != c.rend(); ++i)
     9  
    10 #define pr(x) cout << #x << " = " << x << "  "
    11 #define prln(x) cout << #x << " = " << x << endl
    12  
    13 #define ALL(x) x.begin(),x.end()
    14 #define INS(x) inserter(x,x.begin())
    15  
    16 #define ms0(a) memset(a,0,sizeof(a))
    17 #define msI(a) memset(a,inf,sizeof(a))
    18  
    19 #define pii pair<int,int>
    20 #define piii pair<pair<int,int>,int>
    21 #define mp make_pair
    22 #define pb push_back
    23 #define fi first
    24 #define se second
    25  
    26 inline int gc(){
    27     static const int BUF = 1e7;
    28     static char buf[BUF], *bg = buf + BUF, *ed = bg;
    29      
    30     if(bg == ed) fread(bg = buf, 1, BUF, stdin);
    31     return *bg++;
    32 }
    33  
    34 inline int ri(){
    35     int x = 0, f = 1, c = gc();
    36     for(; c<48||c>57; f = c=='-'?-1:f, c=gc());
    37     for(; c>47&&c<58; x = x*10 + c - 48, c=gc());
    38     return x*f;
    39 }
    40  
    41 typedef long long LL;
    42 const int maxN = 1e5 + 7;
    43  
    44 int n, k, ans;
    45 int x[21];
    46  
    47 bool isPrime(int x) {
    48     assert(x > 1);
    49     For(i, 2, (int)(sqrt(x) + 1e-6)){
    50         if(x % i == 0) return false;
    51     }
    52     return true;
    53 }
    54  
    55 void dfs(int a, int cnt, int sum) {
    56     if(cnt == k) {
    57         if(isPrime(sum)) ++ans;
    58         return;
    59     }
    60     if(a > n) return;
    61      
    62     dfs(a+1, cnt+1, sum+x[a]);
    63     dfs(a+1, cnt, sum);
    64 }
    65  
    66 int main(){
    67     scanf("%d%d", &n, &k);
    68     For(i, 1, n) x[i] = ri();
    69      
    70     dfs(1, 0, 0);
    71      
    72     printf("%d
    ", ans);
    73     return 0;
    74 }
    View Code
  • 相关阅读:
    简单的实现UIpicker上面的取消确定按钮
    ios 笔记
    KVO 简单使用
    iOS 返回到根目录实现
    ios 实现简单的断点续传下载 nsurlconnection
    cocos2d 安装mac
    iOS 自定义自动锁屏时间
    PHP面向对象——单例模式
    PHP面向对象——构造函数、析构函数
    PHP面向对象——多态
  • 原文地址:https://www.cnblogs.com/zaq19970105/p/10753047.html
Copyright © 2020-2023  润新知