求解Catalan数,(大数相乘,大数相除,大数相加)
Catalan数
卡塔兰数是组合数学中一个常在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名。历史上,清代数学家明安图(1692年-1763年)在其《割圜密率捷法》最早用到“卡塔兰数”,远远早于卡塔兰。有中国学者建议将此数命名为“明安图数”或“明安图-卡塔兰数”。卡塔兰数的一般公式为 C(2n,n)/(n+1)。
//大数相加
string add(string s1,string s2)
{
if(s1.length()<s2.length())
{
string temp=s1;
s1=s2;
s2=temp;
}
int i,j;
for(i=s1.length()-,j=s2.length()-; i>=; i--,j--)
{
s1[i]=char(s1[i]+(j>=?s2[j]-'':));
if(s1[i]-''>=)
{
s1[i]=char((s1[i]-'')%+'');
if(i) s1[i-]++;
else s1=''+s1;
}
}
return s1;
}
大数相乘
//大数相乘
string mult(string a,string b)
{
int flag=,i,j,k,p,q,t,max;
char ch;
string c,ans;
p=a.size()-;
q=b.size()-;
ans="";
for(i=p; i>=; i--)
{
flag=;
c="";
for(j=i; j<p; j++) c+='';
for(j=q; j>=; j--)
{
t=(b[j]-'')*(a[i]-'')+flag;
flag=t/;
c+=(t%+'');
}
if(flag) c+=(flag+'');
for(j=,k=c.size()-; j<k; j++,k--)
{
ch=c[j];
c[j]=c[k];
c[k]=ch;
}
ans=add(ans,c);
}
return ans;
}
大数除以小数
//大数除以小数
string div(string src,int n)
{
string dest="";
int len = src.length(),i,k,t = , s = ;
bool flag = true;
for(i=,k=; i<len; i++)
{
t = s*+(src[i]-);
if(t/n> || t==)
dest += (t/n+),s = t%n,flag = false;
else
{
s = t;
if(!flag)
dest += '';
}
}
return dest;
}
求解Catalan数
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
#include<string.h>
#include<stack>
#include<set>
#include <queue>
using namespace std;
string s[]; //大数相加
string add(string s1,string s2)
{
if(s1.length()<s2.length())
{
string temp=s1;
s1=s2;
s2=temp;
}
int i,j;
for(i=s1.length()-,j=s2.length()-; i>=; i--,j--)
{
s1[i]=char(s1[i]+(j>=?s2[j]-'':));
if(s1[i]-''>=)
{
s1[i]=char((s1[i]-'')%+'');
if(i) s1[i-]++;
else s1=''+s1;
}
}
return s1;
} //大数相乘
string mult(string a,string b)
{
int flag=,i,j,k,p,q,t,max;
char ch;
string c,ans;
p=a.size()-;
q=b.size()-;
ans="";
for(i=p; i>=; i--)
{
flag=;
c="";
for(j=i; j<p; j++) c+='';
for(j=q; j>=; j--)
{
t=(b[j]-'')*(a[i]-'')+flag;
flag=t/;
c+=(t%+'');
}
if(flag) c+=(flag+'');
for(j=,k=c.size()-; j<k; j++,k--)
{
ch=c[j];
c[j]=c[k];
c[k]=ch;
}
ans=add(ans,c);
}
return ans;
} //大数除以小数
string div(string src,int n)
{
string dest="";
int len = src.length(),i,k,t = , s = ;
bool flag = true;
for(i=,k=; i<len; i++)
{
t = s*+(src[i]-);
if(t/n> || t==)
dest += (t/n+),s = t%n,flag = false;
else
{
s = t;
if(!flag)
dest += '';
}
}
return dest;
}
int main()
{
s[]="";
for(int i=; i<; i++)
{
char s1[];
sprintf(s1,"%d",*i-);
s[i] = mult(s[i-],s1);
s[i] = div(s[i],i+);
}
int n;
while(scanf("%d",&n))
{
if(n==-) break;
cout<<s[n]<<endl;
}
return ;
}
求解Catalan数,(大数相乘,大数相除,大数相加)的更多相关文章
- 1051:A × B problem 大数相乘
给你两个整数,请你计算A × B. 输入 数据的第一行是整数T(1 ≤ T ≤ 20),代表测试数据的组数.接着有T组数据,每组数据只有一行,包括两个非负整数A和B.但A和B非常大,Redraimen ...
- 大数相乘----C语言
/* 大数相乘: 因为是大数,乘积肯定超出了能定义的范围,因此考虑用数组存储,定义三个数组,分别存储乘数,被乘数和积. 规则与平常手算一样,从个位开始分别与被乘数的每一位相乘,但是有一点不同的是:我们 ...
- 【集训笔记】【大数模板】特殊的数 【Catalan数】【HDOJ1133【HDOJ1134【HDOJ1130
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3324 http://blog.csdn.net/xymscau/artic ...
- (母函数 Catalan数 大数乘法 大数除法) Train Problem II hdu1023
Train Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Java 大数相乘、大数相加、大数相减
思路来源:: https://blog.csdn.net/lichong_87/article/details/6860329 /** * @date 2018/6/22 * @description ...
- HDU 1023 Train Problem II 大数打表Catalan数
一个出栈有多少种顺序的问题.一般都知道是Catalan数了. 问题是这个Catalan数非常大,故此须要使用高精度计算. 并且打表会速度快非常多.打表公式要熟记: Catalan数公式 Cn=C(2n ...
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...
- 大数相加和大数相乘以及打印从1到最大的n位数
string add(string a, string b){ int nlength; int diff; if (a.size() > b.size()){ nlength = a.size ...
- POJ 2389 Bull Math(水~Java -大数相乘)
题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...
随机推荐
- java Vamei快速教程15 IO基础
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机最重要的功能是处理数据.一个有用的计算机语言需要拥有良好的IO功能,以便让未 ...
- .net reflector 的缺陷
.net reflector是一个反编译DLL的工具,在安装后如果电脑上有VS也会同时安装到VS里面,但是他是收费的,虽然反编译的效果很好,但是运行VS2013时(或许其他版本也有这样的问题)如果项目 ...
- MVC文件下载和webform也能使用的下载方法
public ActionResult Index() { DownloadMethod("text/plain", "C:/Users/sunny/Pictures/S ...
- Object comparison - (BOOL)isEqual:(id)other
https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/Obje ...
- Angular4中常用管道
通常我们需要使用管道实现对数据的格式化,Angular4中的管道和之前有了一些变化,下面说一些常用的管道. 一.大小写转换管道 uppercase将字符串转换为大写 lowercase将字符串转换为小 ...
- ARM体系结构与编程-3
ARM存储系统:ARM中用于存储管理的系统控制协处理器CP15:包括16个32位寄存器,其编号为0到15.实际上对于某些编号的寄存器可能相应有多个物理寄存器. 訪问CP15寄存器的指令:MRC.MCR ...
- dn.net/blueheart20/article/details/22080489
dn.net/blueheart20/article/details/22080489
- vi中系统剪切板的设置
在vi中,如果编译时没有clipboard属性,将vi中的内容拷贝到系统剪切板有些麻烦.可以用如下的方法,查看vi 是否支持系统剪切板的功能: xt@xt-ThinkPad-X220:~$ vi -- ...
- java POI往word文档中指定位置插入表格
1.Service demo import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.a ...
- http 高级配置 虚拟主机,https 编译安装
目录 http 高级配置 虚拟主机,https 编译安装 http 重定向 https HSTS HSTS preload list http 自带的工具程序 httpd的压力测试工具 实现状态页 反 ...