牛客多校第一场J题 Easy Integration
先解决数学问题解积分表达式,听说这是高数题目,(水平还需要提高,这种式子算起来还是不算太难的,但是当时死活不知道咋求,放假放傻了…高中爷orz
∫
0
1
x
n
(
1
−
x
)
n
d
x
=
1
n
+
1
∫
0
1
(
1
−
x
)
n
d
x
n
+
1
=
1
n
+
1
x
n
+
1
(
1
−
x
)
n
−
n
n
+
1
∫
0
1
x
n
+
1
(
1
−
x
)
n
−
1
(
−
1
)
d
x
∵
前
一
项
积
分
上
下
限
01
均
等
于
0
所
以
可
省
略
,
经
过
n
次
约
简
得
到
=
n
!
(
n
+
1
)
(
n
+
2
)
×
(
2
n
−
1
)
(
2
n
)
∫
0
1
x
2
n
d
x
=
n
!
2
(
2
n
+
1
)
!
\begin{aligned} &\int_0^1x^n(1-x)^ndx\\ =&\frac{1}{n+1}\int_0^1(1-x)^ndx^{n+1}\\ =&\frac{1}{n+1}x^{n+1}(1-x)^n-\frac{n}{n+1}\int_0^1x^{n+1}(1-x)^{n-1}(-1)dx\\ \because&前一项积分上下限01均等于0所以可省略,经过n次约简得到\\ =&\frac{n!}{(n+1)(n+2)\times(2n-1)(2n)}\int_0^1x^{2n}dx\\ =&\frac{n!^2}{(2n+1)!} \end{aligned}
==∵==∫01xn(1−x)ndxn+11∫01(1−x)ndxn+1n+11xn+1(1−x)n−n+1n∫01xn+1(1−x)n−1(−1)dx前一项积分上下限01均等于0所以可省略,经过n次约简得到(n+1)(n+2)×(2n−1)(2n)n!∫01x2ndx(2n+1)!n!2
最后这个阶乘式子表达为最终的有理式 p q \frac{p}{q} qp形式
询问1e5
,n
最大1e6
所以打阶乘表解决问题,用long long
直接乘法+%p
p是素数,由费马小定理和逆元知识得到: a b − 1 ≡ a b p − 2 ( m o d p ) ab^{-1}\equiv ab^{p-2}(mod\quad p) ab−1≡abp−2(modp).
逆元
,快速幂
,数学
,打表
最后AC,补题成功
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const ll mod = 998244353;
ll F[2000020],F_1[2000020];
ll n,up,down;
ll pow(ll a,ll b){
ll ans = 1;
for(;b;b >>= 1){
if(b & 1){
ans = (ans*a)%mod;
}
a = a*a%mod;
}
return ans;
}
int main(){
//预处理阶乘数组
F[0]=1;
for(int i=1;i<=2000005;i++){
F[i] = F[i-1] * i % mod;
// F_1[i] = pow(F[i],mod-2);
}
while(scanf("%lld",&n)!=EOF){
up = F[n]*F[n] % mod;
down = pow(F[2*n+1],mod-2)%mod;
printf("%lld\n",up*down%mod);
}
return 0;
}