码迷,mamicode.com
首页 > 其他好文 > 详细

数学知识:逆元、卡特兰数

时间:2018-07-25 16:12:39      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:shu   代码   别人   出现   lin   targe   scan   英文名   ati   

一、逆元

递推逆元

这是别人博客上的证明,来源于:https://blog.csdn.net/rain722/article/details/53170288。

下面是ACdreamers关于递推求解逆元的推导过程(个人觉得他的更好)

 

 

其实有些题需要用到技术分享图片技术分享图片的所有逆元,这里技术分享图片为奇质数。那么如果用快速幂求时间复杂度为技术分享图片

 

如果对于一个1000000级别的素数技术分享图片,这样做的时间复杂度是很高了。实际上有技术分享图片的算法,有一个递推式如下

 

 

 

                   技术分享图片

 

 

 

它的推导过程如下,设技术分享图片,那么

 

 

 

       技术分享图片

 

 

 

对上式两边同时除技术分享图片,进一步得到

 

 

 

       技术分享图片

 

 

 

再把技术分享图片技术分享图片替换掉,最终得到

 

 

 

       技术分享图片

 

 

 

初始化技术分享图片,这样就可以通过递推法求出技术分享图片模奇素数技术分享图片的所有逆元了。

 

 

 

另外技术分享图片技术分享图片的所有逆元值对应技术分享图片中所有的数,比如技术分享图片,那么技术分享图片对应的逆元是技术分享图片

 

由此,线性筛逆元的代码诞生了:(洛谷3811 AC)

 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
long long inv[3000004],n,modd;
void dt()
{
    inv[1]=1;
    for(long long i=2;i<=n;i++) inv[i]=((-(modd/i)*inv[modd%i])%modd+modd)%modd;
}
int main()
{
    scanf("%lld%lld",&n,&modd);
    dt();
    for(long long i=1;i<=n;i++)printf("%lld\n",inv[i]);
    return 0;
} 

 

二、卡特兰数

1.简介
卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。以比
利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862,
16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190,
6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...  ————度

应用:

洛谷1044 栈

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
long long ans[20];
int n;
void catelanshu(int n)
{
    long long a=0;
    for(int i=0;i<=n-1;i++)
    {
        a=a+ans[i]*ans[n-1-i];
    }
    ans[n]=a;
}
int main()
{
    ans[0]=1;ans[1]=1;
    cin>>n;
    for(int i=2;i<=n;i++)catelanshu(i);
    cout<<ans[n];
    return 0;
} 

 

数学知识:逆元、卡特兰数

标签:shu   代码   别人   出现   lin   targe   scan   英文名   ati   

原文地址:https://www.cnblogs.com/czktransformers/p/9366028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!