题目
链接:https://ac.nowcoder.com/acm/contest/5666/J
来源:牛客网
示例1
输入
1
2
3
输出
166374059
432572553
591816295
此图来源于网络
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
ll quick_mul (ll a,ll b,ll c)//快速乘
{
return (a*b-(ll)((long double)a*b/c)*c+c)%c;
}
ll quick_pow (ll a,ll b,ll c)//快速幂
{
ll ans=1,base=a;
while (b!=0)
{
if (b&1)
ans=quick_mul (ans,base,c);
base=quick_mul (base,base,c);
b>>=1;//b/2
}
return ans%c;
}
ll factoral[2000050];
// 动态规划
void init()
{
factoral[0]=1;
for(int i=1; i<=2000001; i++)
{ //基础的dp使用,只要查factoral[x]就有对应的答案
factoral[i]=i*factoral[i-1]%mod;
}
}
int main()
{
ll n;
init();
while(~scanf("%lld",&n))
{
ll sum=factoral[2*n+1];
ll sum1=quick_pow(factoral[n],mod-2,mod);
sum1=quick_pow(sum1,2,mod);
sum=sum*sum1%mod;
printf("%lld\n",quick_pow(sum,mod-2,mod));
}
}