📄 1023.cpp
字号:
#include <stdio.h>
#include <string.h>
char temp[1100]={0},sum[1100]={0};
int main()
{
void multipe(char a[],char b[]);
void puls(char a[],char b[]);
char result[110][1000] = {0};
char tt[1100],hh[1100];
int i,j,k;
int n;
result[0][0] = 49;
result[1][0] = 49;
for( i=2; i <= 101; i ++){
result[i][0]='0';
for(j = 0;j < i;j ++){
memset(tt,0,sizeof(tt));
memset(hh,0,sizeof(hh));
strcpy(tt,result[j]);
strcpy(hh,result[i-j-1]);
multipe(tt,hh);
puls(temp,result[i]);
memset(result[i],0,sizeof(result[i]));
for(k=0;sum[k];k++)
result[i][k]=sum[k];
}
}
while(scanf("%d",&n)!=EOF)
printf("%s\n",result[n]);
return 0;
}
void multipe(char a[],char b[])
{
int la,lb;
char t[1000];
int c[2000];
int i,j,l;
la=strlen(a);
lb=strlen(b);
memset(t,0,sizeof(t));
strcpy(t,a);
for(j=0,i=la-1;i>=0;i--) a[j++]=t[i];
memset(t,0,sizeof(t));
strcpy(t,b);
for(j=0,i=lb-1;i>=0;i--) b[j++]=t[i];
memset(c,0,sizeof(c));
for(i=0;i<la;i++)
for(j=0;j<lb;j++){
c[i+j]+=(a[i]-48)*(b[j]-48);
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
l=la+lb+1;
while(l>=0&&!c[l]) l--;
if(l<0) c[0]=0;
memset(temp,0,sizeof(temp));
if(l<0) temp[0]='0';
for(i=l,j=0;i>=0;i--,j++)
temp[j]=c[i]+48;
}
void puls(char a[],char b[])
{
int i,j,k1,la,lb,s,lsum;
int c=0;
char h;
for(j=0;a[j];j++); la=j-1;
for(j=0;b[j];j++); lb=j-1;
memset(sum,0,sizeof(sum));
k1=0;
while(1){
if(la<0&&lb<0) break;
else if(la<0) s=b[lb--]-48;
else if(lb<0) s=a[la--]-48;
else s=a[la--]-48+b[lb--]-48;
if(k1==0) {sum[k1]=s%10+48 ;c=s/10;}
else {sum[k1]=(s+c)%10+48;c=(s+c)/10;}
k1++;
}
if(c!=0) sum[k1]=c+48;
lsum=strlen(sum)-1;
for(i=0;i<=lsum/2;i++)
{h=sum[i];sum[i]=sum[lsum-i];sum[lsum-i]=h;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -