2020牛客多校第一场J题[Easy Integration(逆元+数学推导打表)

39 篇文章 3 订阅
14 篇文章 0 订阅

牛客多校第一场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(1x)ndxn+1101(1x)ndxn+1n+11xn+1(1x)nn+1n01xn+1(1x)n1(1)dx010n(n+1)(n+2)×(2n1)(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) ab1abp2(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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数学小牛马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值