【高精度】NCPC 2014 C catalansqure

来源:互联网 发布:用友软件公司简介 编辑:程序博客网 时间:2024/05/21 05:55

题目链接:

  http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1789

题目大意:

  求大卡特兰数。。公式如下。输入n求Sn(n<=5000)

题目思路:

  【高精度】

  Sn=Cn+1。直接压四位高精度算一遍就好。只要写高精度乘单精度,高精度除单精度。




////by coolxxx//#include<bits/stdc++.h>#include<iostream>#include<algorithm>#include<string>#include<iomanip>#include<map>#include<stack>#include<queue>#include<set>#include<bitset>#include<memory.h>#include<time.h>#include<stdio.h>#include<stdlib.h>#include<string.h>//#include<stdbool.h>#include<math.h>#define min(a,b) ((a)<(b)?(a):(b))#define max(a,b) ((a)>(b)?(a):(b))#define abs(a) ((a)>0?(a):(-(a)))#define lowbit(a) (a&(-a))#define sqr(a) ((a)*(a))#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))#define mem(a,b) memset(a,b,sizeof(a))#define eps (1e-8)#define J 10000#define mod 1000000007#define MAX 0x7f7f7f7f#define PI 3.14159265358979323#define N 20004using namespace std;typedef long long LL;int cas,cass;int n,m,lll,ans;int a[N];void gjdchengdjd(int a[],int b){int i;for(i=1;i<=a[0];i++)a[i]*=b;for(i=1;i<=a[0];i++)a[i+1]+=a[i]/J,a[i]%=J;while(a[a[0]+1])a[0]++;}void gjdchudjd(int a[],int b){int i;for(i=a[0];i>1;i--)a[i-1]+=(a[i]%b)*J,a[i]/=b;a[1]/=b;while(!a[a[0]] && a[0]>1)a[0]--;}void gjdprint(int a[]){int i;printf("%d",a[a[0]]);for(i=a[0]-1;i;i--)printf("%04d",a[i]);puts("");}int main(){#ifndef ONLINE_JUDGE//freopen("1.txt","r",stdin);//freopen("2.txt","w",stdout);#endifint i,j,k;int x,y,z;//for(scanf("%d",&cass);cass;cass--)//for(scanf("%d",&cas),cass=1;cass<=cas;cass++)//while(~scanf("%s",s+1))while(~scanf("%d",&n)){n++;a[0]=a[1]=1;for(i=n+1;i<=n+n;i++)gjdchengdjd(a,i);for(i=2;i<=n+1;i++)gjdchudjd(a,i);gjdprint(a);}return 0;}/*////*/


0 0
原创粉丝点击