题目描述
Given , find the value of
.
It can be proved that the value is a rational number .
Print the result as .
输入描述
The input consists of several test cases and is terminated by end-of-file.
Each test case contains an integer .
. The number of test cases does not exceed
.
输出描述
For each test case, print an integer which denotes the result.
示例1
输入
1 2 3
输出
166374059 432572553 591816295
备注
For ,
.
分析
令 ,利用分部积分法求解。
预处理阶乘后,只需要计算逆元即可得到答案。
代码
/******************************************************************
Copyright: 11D_Beyonder All Rights Reserved
Author: 11D_Beyonder
Problem ID: 2020牛客暑期多校训练营(第一场) Problem J
Date: 8/10/2020
Description: Integration
*******************************************************************/
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
const int N=1000004;
const ll mod=998244353;
ll fac[N<<1];
int n;
void init();
ll qpow_mod(ll,ll);
int main()
{
init();
while(~scanf("%d",&n))
{
ll up=fac[n]*fac[n]%mod;//分子
ll down=qpow_mod(fac[2*n+1],mod-2);//分母
printf("%lld\n",up*down%mod);
}
return 0;
}
void init()//预处理
{
fac[0]=1;
const int SIZE=1000000*2+1;
for(register int i=1;i<=SIZE;i++)
{
fac[i]=fac[i-1]*(ll)i;
fac[i]%=mod;
}
}
ll qpow_mod(ll a,ll b)
{
ll res=1;
while(b)
{
if(b&1) res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
} 
京公网安备 11010502036488号