zoukankan      html  css  js  c++  java
  • 2020牛客暑期多校训练营 分部积分 [Easy Integration]

    2020牛客暑期多校训练营 分部积分 Easy Integration

    题目大意:

    给你一个积分函数,让你计算

    题解:

    这个题目真的让我非常惊讶,一开始想到了要分部积分求这个定积分然后求解,但是想想如果这样不就是一个数学题目了吗?于是就没有写,最后发现还真是一个数学题目,晕。

    这个题目用分部积分的公式很好写。

    [int uv' dx = uv + int vu' dx ]

    按照上面的公式,你会发现因为上下限是01,所以前面的 (uv=0) ,然后后面的就是一个的指数在上升一个的指数在下降,所以按照这样下去,就可以把一个x的指数一直往下降,降到1,就可以进行积分求解了。

    最后求解出来的公式就是 (frac{n!}{(2n+n)!})

    这个就可以预处理一下,然后直接得出答案。

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 2e6+10;
    const int mod = 998244353;
    typedef long long ll;
    ll f[maxn];
    
    void init(){
        f[0]=1;
        for(int i=1;i<maxn;i++) f[i]=f[i-1]*i%mod;
    }
    
    long long inv(long long x,long long mod)
    {
        long long k=mod-2,ans=1;
        while(k)
        {
            if (k&1) ans=ans*x%mod;
            x=x*x%mod;
            k>>=1;
        }
        return ans;
    }
    
    int main(){
        int n;
        init();
        while(scanf("%d",&n)!=EOF){
            ll x = f[n]*f[n]%mod;
            ll y = inv(f[2*n+1],mod)%mod;
            printf("%lld
    ",x*y%mod);
        }
    
    }
    
  • 相关阅读:
    Shell 数组
    Shell 中的中括号用法总结
    设置Linux可以查看历史命令(history)的执行时间
    jasypt 对 配置文件密码进行加密处理
    今日进度
    今日进度
    今日进度
    今日进度
    今日进度
    每周总结
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/13289732.html
Copyright © 2011-2022 走看看