⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1023.cpp

📁 杭电 acm部分代码 有兴趣的可以下载 谢谢
💻 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 + -