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\n",x*y%mod);
}
}