zoukankan      html  css  js  c++  java
  • 【URAL】1091 Tmutarakan Exams

    题意:取k个不同的数,每个数不超过s,问种数。

    若kx1,kx2,...,kx3满足条件,则x1,x2,...,x3必然满足条件。

    因此枚举素数容斥,2*3*5*7>50,所以枚举之多三层。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<vector>
     4 #define MAXN 60
     5 typedef long long LL;
     6 using namespace std;
     7 bool p[MAXN];
     8 vector<int> prime;
     9 LL C[MAXN][MAXN];
    10 void Init() {
    11     int i, j;
    12     memset(p, true, sizeof(p));
    13     for (i = 2; i < 10; i++) {
    14         if (p[i]) {
    15             for (j = i * i; j < MAXN; j += i)
    16                 p[j] = false;
    17         }
    18     }
    19     prime.clear();
    20     for (i = 2; i < MAXN; i++) {
    21         if (p[i])
    22             prime.push_back(i);
    23     }
    24     memset(C, 0, sizeof(C));
    25     for (i = 0; i < MAXN; i++)
    26         C[i][0] = C[i][i] = 1;
    27     for (i = 1; i < MAXN; i++) {
    28         for (j = 1; j < i; j++)
    29             C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
    30     }
    31 }
    32 int main() {
    33     LL ans;
    34     int t, s, i, j, k;
    35     Init();
    36     while (~scanf("%d%d", &t, &s)) {
    37         for (ans = i = 0; i < (int) prime.size(); i++)
    38             ans += C[s / prime[i]][t];
    39         for (i = 0; i < (int) prime.size(); i++) {
    40             for (j = i + 1; j < (int) prime.size(); j++)
    41                 ans -= C[s / prime[i] / prime[j]][t];
    42         }
    43         for (i = 0; i < (int) prime.size(); i++) {
    44             for (j = i + 1; j < (int) prime.size(); j++) {
    45                 for (k = j + 1; k < (int) prime.size(); k++)
    46                     ans += C[s / prime[i] / prime[j]
    47                             / prime[k]][t];
    48             }
    49         }
    50         if (ans > 10000)
    51             ans = 10000;
    52         printf("%lld\n", ans);
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    【linux】which和whereis
    【linux】locate介绍
    【linux】find命令详解
    【linux】umask
    【linux】文件目录说明
    【linux】Linux系统信息查看命令大全
    【linux】mkdir -p命令
    【linux】head&&tail
    【linux】less &&more
    【linux】ls常用参数
  • 原文地址:https://www.cnblogs.com/DrunBee/p/2673539.html
Copyright © 2011-2022 走看看