• 求值2 组合数公式题目


    链接:https://www.nowcoder.com/acm/contest/114/B
    来源:牛客网

    题目描述

    Ans = 0; 
    For(inti = 1; i <= n; i++) 
        For(int v = 0; v <= n; v++) 
            Ans = (Ans + C(i, v) * C(i, v)) % 998244353;
    C(i,v)为组合数第i行第v列的数。
    给你上面的代码中的n,请你输出Ans的值。

    输入描述:

    输入一个整数n

    输出描述:

    输出Ans的值。
    示例1

    输入

    复制
    3

    输出

    复制
    28

    备注:

    n<=106

            这题然后就变成了  求组合数的问题了

      这题需要取模,所以用费马小定理  

           先预处理求出阶乘和  

          (a[i * 2] % mod) * (expmod(a[i] * a[i] % mod, mod - 2) % mod) % mod)  这个就是C(n,2*n)的值

       

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <string>
     4 #include <map>
     5 #include <cstring>
     6 #include <algorithm>
     7 using namespace std;
     8 const int maxn = 2e6 + 10;
     9 const int mod = 998244353;
    10 typedef long long LL;
    11 LL expmod(LL a, LL b) {
    12     LL ret = 1;
    13     while(b) {
    14         if (b & 1) ret = ret * a % mod;
    15         b = b >> 1;
    16         a = a * a % mod;
    17     }
    18     return ret;
    19 }
    20 LL a[maxn];
    21 void init() {
    22     a[0] = a[1] = 1;
    23     for (int i = 2 ; i < maxn ; i++)
    24         a[i] = a[i - 1] * i % mod;
    25 }
    26 int main() {
    27     init();
    28     int n;
    29     scanf("%d", &n);
    30     LL ans = 0;
    31     for (int i = 1 ; i <= n ; i++)
    32         ans = (ans + (a[i * 2] % mod) * (expmod(a[i] * a[i] % mod, mod - 2) % mod) % mod) % mod;
    33     printf("%lld
    ", ans);
    34     return 0;
    35 }
  • 相关阅读:
    EL表达式(Expression Language)
    JSP简单功能介绍
    MySQL基础使用
    JDBC
    MySQL安装卸载
    stanfordnlp dependencies(依存关系简写表)
    不需要深度学习就能做的文本分类器
    词向量的cbow模型
    pytorch实现自己的textCNN
    OpenCV编译viz模块
  • 原文地址:https://www.cnblogs.com/qldabiaoge/p/9159149.html
Copyright © 2020-2023  润新知