博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
默慈金数
阅读量:5162 次
发布时间:2019-06-13

本文共 1476 字,大约阅读时间需要 4 分钟。

 今天,我来讲一种比较特殊的数,可能很多人都没有听过这种数,它叫
默慈金数。但事实是它早就已经进入了ACM竞

赛中了。好了,接下来让我们一起来认识它,并会讲述一些它的重要应用。

本文转自ACdreamer博客(ACdreamer大牛太牛了)

 

百度百科上,是这样定义默慈金数的:一个给定的数的默慈金数是在一个圆上的个点间,画出彼此不相交弦的

全部方法的总数。比如4时,方法数为9,如下图

 

                    

 

默慈金数在几何,组合数学和数论等领域中皆有其重要用途,它的递归定义如下

 

      

 

接下来是最重要的环节,来探讨上述递推公式的由来。有一篇论文有详细讲解,我已放到豆丁网上,如下

 

链接:

 

 

其实默慈金数还有很多不同的展现方式,比如:在一个网格上,若限定每步只能向右移动一格,可以右上,右下,

横向,向右,并禁止移动到以下的地方,则以这种走法移动步从的可能形成的路径的总数

的默慈金数。如下图示

 

      

 

接下来,看几个比较典型的题目。

 

题目:

 

分析:赤裸裸的求默慈金数,用Java处理大数比较方便。实际上默慈金数还有另一个公式,如下

 

      

 

     对于本题,我们枚举有步向上,那么必然有步向下,则针对每个得到答案是,求和

     后便得到最终答案。

import java.math.*;

import java.util.*;

 

public class Main {

 

public static final int N = 10005;

public static final BigInteger MOD = BigInteger.valueOf(10).pow(100);

public static BigInteger ans[] = new BigInteger[N];

public static void Init(){

ans[1] = BigInteger.valueOf(1);

ans[2] = BigInteger.valueOf(2);

for(int i = 3; i < N; i++){

BigInteger a = ans[i - 1].multiply((BigInteger.valueOf(2).multiply(BigInteger.valueOf(i)).add(BigInteger.valueOf(1))));

BigInteger b = ans[i - 2].multiply((BigInteger.valueOf(3).multiply(BigInteger.valueOf(i)).subtract(BigInteger.valueOf(3))));

ans[i] = (a.add(b)).divide(BigInteger.valueOf(i).add((BigInteger.valueOf(2))));

}

}

 

public static void main(String[] args){

Init();

Scanner cin = new Scanner(System.in);

while(cin.hasNext()){

int n = cin.nextInt();

System.out.println(ans[n].mod(MOD));

}

}

}

 

题目:

 

分析:数一巨巨的题目,仔细想想实际跟上题一样,直接上默慈金数即可。

 

默慈金数的生成函数详见:

 

 

讲完了默慈金数,还有一类数,叫做那罗延数,具体参考如下链接

 

链接: 

 

转载于:https://www.cnblogs.com/boson-is-god/p/5431810.html

你可能感兴趣的文章
gdb调试(二)
查看>>
递归回溯法解决八皇后问题
查看>>
12.17 Nginx负载均衡 12.18 ssl原理 12.19 生成ssl密钥对 12.20 Nginx配置ssl
查看>>
CentOS 7 上 yum 安装python3
查看>>
prop attr
查看>>
android BadgeView的使用(图片上的文字提醒)
查看>>
homework-09
查看>>
如何上传文件
查看>>
35 个 Java 代码性能优化总结
查看>>
怎样才能自学好Java?
查看>>
php英语单词,php常用英语单词,快速学习php编程英语(4)
查看>>
5月29,48h,Geekathon,创业极客的梦想起点
查看>>
bzoj4415: [Shoi2013]发牌
查看>>
JAVA基础——使用配置文件
查看>>
Unicode转字符串
查看>>
Keil C51汉字显示的bug问题
查看>>
网页浮动的解析
查看>>
webgis技术在智慧城市综合治理(9+X)网格化社会管理平台(综治平台)的应用研究...
查看>>
Ansible--项目实战
查看>>
一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符
查看>>