HDU 1023 大数卡特兰
发布时间:2020-12-14 02:40:01 所属栏目:大数据 来源:网络整理
导读://h[i]=h[i-1]*(4*i-2)/(i+1);#includestdio.h#includeiostreamusing namespace std;#define MAX 100#define BASE 10000void multiply(int a[],int Max,int b)//大数乘法{ int i,array=0; for(int i=Max-1;i=0;i--) { array+=b*a[i]; a[i]=array%BASE; array
//h[i]=h[i-1]*(4*i-2)/(i+1); #include<stdio.h> #include<iostream> using namespace std; #define MAX 100 #define BASE 10000 void multiply(int a[],int Max,int b)//大数乘法 { int i,array=0; for(int i=Max-1;i>=0;i--) { array+=b*a[i]; a[i]=array%BASE; array/=BASE; } } void divide(int a[],int b)//大数除法 { int i,div=0; for(i=0;i<Max;i++) { div=div*BASE+a[i]; a[i]=div/b; div%=b; } } int main() { int a[101][MAX],i,j,n; memset(a[1],MAX*sizeof(int)); for(i=2,a[1][MAX-1]=1;i<101;i++) { memcpy(a[i],a[i-1],MAX*sizeof(int));//h[i]=h[i-1]; multiply(a[i],MAX,4*i-2); divide(a[i],i+1); } while(cin>>n) { for(i=0;i<MAX&&a[n][i]==0;i++); cout<<a[n][i++]; for(;i<MAX;i++) printf("%04d",a[n][i]); cout<<endl; } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |