Contset Hunter 1102 高精度求卡特兰数
用递推的方式写的写挂了,而如果用组合数又不会高精度除法,偶然看到了别人的只用高精度乘低精度求组合数的方法,记录一下
#include<bits/stdc++.h>
using namespace std;
const int maxn=60010;
const long long M=1000000000;
typedef long long LL;
LL num[maxn];
int cnt[maxn*2];//记录素数因子的个数
int len=1;
void get_cnt(int x,int y){
for(int i=2;i*i<=x&&x>1;i++){
while(x%i==0){
x/=i;
cnt[i]+=y;
}
}
if(x)cnt[x]+=y;
}
void mul(LL x){//高精度乘单精度
for(int i=1;i<=len;i++)
num[i]*=x;
for(int i=1;i<=len;i++){
num[i+1]+=(num[i]/M);
num[i]%=M;
}
while(num[len+1])len++;
}
int main(){
int n;
scanf("%d",&n);
num[1]=1;
for(int i=n+1;i<=n*2;i++)//乘法就是加素数因子的个数
get_cnt(i,1);
for(int i=2;i<=n+1;i++)//除法就是减素数因子的个数
get_cnt(i,-1);
for(LL i=2;i<=2*n;i++)//求的时候只关心素数因子剩多少个就行了
for(LL j=1;j<=cnt[i];j++){
mul(i);
}
printf("%lld",num[len]);
for(int i=len-1;i>0;i--)
printf("%09lld",num[i]);
}
Contset Hunter 1102 高精度求卡特兰数的更多相关文章
- 【高精度练习+卡特兰数】【Uva1133】Buy the Ticket
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- HOJ 13101 The Triangle Division of the Convex Polygon(数论求卡特兰数(模不为素数))
The Triangle Division of the Convex Polygon 题意:求 n 凸多边形可以有多少种方法分解成不相交的三角形,最后值模 m. 思路:卡特兰数的例子,只是模 m 让 ...
- HDU 1023 Traning Problem (2) 高精度卡特兰数
Train Problem II Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Sub ...
- bzoj3907 网格 & bzoj2822 [AHOI2012]树屋阶梯——卡特兰数+高精度
题目:bzoj3907:https://www.lydsy.com/JudgeOnline/problem.php?id=3907 bzoj2822:https://www.lydsy.com/Jud ...
- HDU-4828 卡特兰数+带模除法
题意:给定2行n列的长方形,然后把1—2*n的数字填进方格内,保证每一行,每一列都是递增序列,求有几种放置方法,对1000000007取余: 思路:本来想用组合数找规律,但是找不出来,搜题解是卡特兰数 ...
- bjfu1238 卡特兰数取余
题目就是指定n,求卡特兰数Ca(n)%m.求卡特兰数有递推公式.通项公式和近似公式三种,因为要取余,所以近似公式直接无法使用,递推公式我简单试了一下,TLE.所以只能从通项公式入手. Ca(n) = ...
- HDU 1023 Train Problem II (大数卡特兰数)
Train Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 浅谈卡特兰数(Catalan number)的原理和相关应用
一.卡特兰数(Catalan number) 1.定义 组合数学中一个常出现在各种计数问题中出现的数列(用c表示).以比利时的数学家欧仁·查理·卡特兰的名字来命名: 2.计算公式 (1)递推公式 c[ ...
- nyoj164——卡特兰数(待填坑)
题意:将1~2n个数按照顺时针排列好,用一条线将两个数字连接起来要求:线之间不能有交点,同一个点只允许被连一次. 最后问给出一个n,有多少种方式满足条件. 卡特兰数(列): 令h(0)=1,h(1)= ...
随机推荐
- 《Advanced Bash-scripting Guide》学习(十四):HERE Document和cat <<EOF
本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 #here document cat <<EOF \z EOF ca ...
- 51nod 1215 单调栈/迭代
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1215 1215 数组的宽度 题目来源: Javaman 基准时间限制:1 ...
- IIFE 立即执行的函数表达式
介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的 ...
- model1 就是jsp+javabean
- MySQL引擎各个引擎对比介绍
1.什么是存储引擎? 存储引擎类似于录制的视频文件,可以转换成不同的格式,如MP4,avi等格式,而存储在我们的磁盘上也会存在于不同类型的文件系统中如:Windows里常见的NTFS,fat32等.存 ...
- OpenCV-Python在图片上输出中文
OpenCV中在图片上输出中文一般需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件.但使用FreeType ...
- [转]NYOJ-511-移动小球
大学生程序代写 http://acm.nyist.net/JudgeOnline/problem.php?pid=511 这道题很容易想到要构建一个循环链表来确定每个球的相对位置,就是操作比较繁琐,考 ...
- numpy、scipy、pandas
以下分别是numpy.Scipy.pandas的简介.虽然这些包提供的一些结构比python自身的“更高级.更高效”,更高级是因为它们能完成更高级的任务,但是,学习的时候尽量不要和python割裂开认 ...
- C#异步编程(二)用户模式线程同步
基元线程同步构造 多个线程同时访问共享数据时,线程同步能防止数据损坏.不需要线程同步是最理想的情况,因为线程同步存在许多问题. 第一个问题就是它比较繁琐,而且很容易写错. 第二个问题是,他们会损害性能 ...
- element-ui table 底部滚动条问题
1.将 .el-table 标签css属性中的 position: relative; width: 100%; max-width: 100%; 修改成 position: absolute; wi ...