2020牛客多校第一场J题

题目

在这里插入图片描述
链接: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));	
	}
}

题目解借鉴于

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值