2020牛客多校第一场J题

题目

2020牛客多校第一场J题_第1张图片
链接:https://ac.nowcoder.com/acm/contest/5666/J
来源:牛客网

示例1
输入

1
2
3
输出

166374059
432572553
591816295

2020牛客多校第一场J题_第2张图片
此图来源于网络


#include
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));	
	}
}

题目解借鉴于

你可能感兴趣的:(ACM)