当前位置: 首页 > news >正文

2020 牛客多校第一场J - Easy Integration(求积分/找规律)

传送门


首先我们写下每一项:

  • n = 1 n=1 n=1 1 2 − 1 3 \frac{1}{2}-\frac{1}{3} 2131

  • n = 2 n=2 n=2 1 3 − 2 4 + 1 5 \frac{1}{3}-\frac{2}{4}+\frac{1}{5} 3142+51

  • n = 3 n=3 n=3 1 4 − 3 5 + 3 6 − 1 7 \frac{1}{4}-\frac{3}{5}+\frac{3}{6}-\frac{1}{7} 4153+6371

  • n = 4 n=4 n=4:…

没错,分子就是组合数 C n i C_n^i Cni,分母是从 n + 1 n+1 n+1 2 ∗ n + 1 2*n+1 2n+1一共 n + 1 n+1 n+1个数,而且正负是交替的,写成通项公式也就是:

∑ i = n + 1 2 ∗ n + 1 ( − 1 ) j C n j i \sum_{i=n+1}^{2*n+1}(-1)^j\frac{C_n^j}{i} i=n+12n+1(1)jiCnj j j j从0到n,共 n + 1 n+1 n+1

一开始写到这里以为大功告成了,冷静分析一波发现时间复杂度为 O ( T ∗ n ) O(T*n) O(Tn),当时心里拔凉拔凉,想着去化简这个通式,发现无从下手

大概过了一个小时,尝试另外一个策略,求出每一项的解,看看有没有规律,答案是有的!可以计算得到

  • n = 1 n=1 n=1 1 6 = 1 2 ∗ 3 \frac{1}{6}=\frac{1}{2*3} 61=231

  • n = 2 n=2 n=2 2 60 = 2 3 ∗ 4 ∗ 5 \frac{2}{60}=\frac{2}{3*4*5} 602=3452

  • n = 3 n=3 n=3 6 840 = 6 4 ∗ 5 ∗ 6 ∗ 7 \frac{6}{840}=\frac{6}{4*5*6*7} 8406=45676

  • n = 4 n=4 n=4 24 15120 = 24 5 ∗ 6 ∗ 7 ∗ 8 ∗ 9 \frac{24}{15120}=\frac{24}{5*6*7*8*9} 1512024=5678924

  • n = 5 n=5 n=5 120 332640 = 120 6 ∗ 7 ∗ 8 ∗ 9 ∗ 10 ∗ 11 \frac{120}{332640}=\frac{120}{6*7*8*9*10*11} 332640120=67891011120

分母的规律显而易见,而分子实际上和 n n n对应起来就是一个递推式,也就是 f ( i ) = i ∗ f ( i − 1 ) f(i)=i*f(i-1) f(i)=if(i1),而且,实际上不就是 i ! i! i!吗(比赛没有想到= =),而分母还可以写成 ( 2 ∗ n + 1 ) ! n ! \frac{(2*n+1)!}{n!} n!(2n+1)!,即最后的答案 ( n ! ) 2 ( 2 ∗ n + 1 ) ! \frac{(n!)^2}{(2*n+1)!} (2n+1)!(n!)2

只需要使用阶乘的逆元这一知识点即可,另外注意预处理 2 e 6 2e6 2e6范围内的阶乘和逆元

实际上正规的解法应该是求积分:

在这里插入图片描述
然后看到还有这种解法,贝塔函数是概率论的一个函数模型

在这里插入图片描述

#include <set>
#include <map>
#include <stack>
#include <queue>
#include <math.h>
#include <cstdio>
#include <string>
#include <bitset>
#include <cstring>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define ins insert
#define lowbit(x) (x&(-x))
#define mkp(x,y) make_pair(x,y)
#define mem(a,x) memset(a,x,sizeof a);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int,int> P;
const double eps=1e-8;
const double pi=acos(-1.0);
const int inf=0x3f3f3f3f;
const ll INF=1e18;
const int p=998244353;
const int maxn=2e6+100;

ll fact[maxn];
ll inv[maxn];

ll quick_mod(ll x,ll n,ll p){
	ll ans=1;
    while(n){
        if(n&1) ans=ans*x%p;
        x=x*x%p;
        n>>=1;
    }
	return ans;
}

void solve(int n){
	fact[0]=1;
	for (int i=1;i<=n; i++) {
		fact[i]=fact[i-1]*i%p;
	}
	inv[n]=quick_mod(fact[n],p-2,p);
	for (int i=n-1;i>=0;i--) {
		inv[i]=inv[i+1]*(i+1)%p;
	}
}


int main(){
    int n;
    solve(maxn-10);
    while(cin>>n){
        ll ans=(fact[n]*fact[n])%p*inv[2*n+1]%p;
        cout<<ans<<endl;
    }
}

相关文章:

  • 转载:宏定义的一些使用技巧总结
  • 2020 WHU校赛 J - Jogging along the Yangtze River(组合数学+卡特兰数)
  • 数据库设计(2009)
  • UVA - 10288 Coupons(期望的性质)
  • 网络存储的基本常识
  • Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math(LCM)
  • 当一个割草男孩
  • Codeforces Round #655 (Div. 2) C. Omkar and Baseball(思维)
  • 方阵(gcd+找规律)
  • 2020牛客暑期多校第二场 C - Cover the Tree(思维/贪心)
  • 网页中的flash加载资源时的路径相对于谁?
  • 2020牛客暑期多校第二场 B - Boundary(简单计算几何)
  • MTK调试入门之一------TRACE使用的技巧
  • 2020牛客暑期多校第二场 F - Fake Maxpooling(dp/单调队列)
  • [HOW TO]如何在iPhone应用程序中发送邮件
  • 分享的文章《人生如棋》
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CentOS 7 修改主机名
  • dva中组件的懒加载
  • ES6核心特性
  • Github访问慢解决办法
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java IO学习笔记一
  • MySQL几个简单SQL的优化
  • Promise面试题,控制异步流程
  • Protobuf3语言指南
  • Redash本地开发环境搭建
  • Redux 中间件分析
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • SpiderData 2019年2月25日 DApp数据排行榜
  • v-if和v-for连用出现的问题
  • 分享一份非常强势的Android面试题
  • 诡异!React stopPropagation失灵
  • 日剧·日综资源集合(建议收藏)
  • 使用API自动生成工具优化前端工作流
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 一个SAP顾问在美国的这些年
  • 移动端解决方案学习记录
  • 怎么把视频里的音乐提取出来
  • - 转 Ext2.0 form使用实例
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • $.ajax()参数及用法
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (12)Linux 常见的三种进程状态
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Note)C++中的继承方式
  • (poj1.3.2)1791(构造法模拟)
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (差分)胡桃爱原石
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (篇九)MySQL常用内置函数
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)h264中avc和flv数据的解析