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

📄 1261.cpp

📁 杭电 acm部分代码 有兴趣的可以下载 谢谢
💻 CPP
字号:
#include<iostream>
#include<string>
using namespace std;
char c[321][15][1000];
void main()
{
    int i,j,k,n;
    char temp[1000],result[1000];
    int s[30],total;
    for(i=0;i<=320;i++)
        for(j=0;j<=12;j++)
            if(j==0)    strcpy(c[i][j],"1");
            else    strcpy(c[i][j],"0");
    for(i=1;i<=320;i++)
        for(j=1;j<=i&&j<=12;j++){
            int lena=strlen(c[i-1][j-1]);
            int lenb=strlen(c[i-1][j]);
            int st[1000]={0},ed[1000]={0},re[1000]={0};
            for(k=0;k<lena;k++)
                st[k]=c[i-1][j-1][lena-k-1]-'0';
            for(k=0;k<lenb;k++)
                ed[k]=c[i-1][j][lenb-k-1]-'0';
            int left=0,len=lena>lenb?lena:lenb;
            for(k=0;k<len;k++){
                re[k]=(st[k]+ed[k]+left)%10;
                left=(st[k]+ed[k]+left)/10;
            }
            if(left>0){
                len++;
                re[len-1]=left;
            }
            for(k=0;k<len;k++)
                c[i][j][k]=re[len-k-1]+'0';
        }
    while(cin>>n){
        if(!n)  break;
        memset(result,0,sizeof(result));
        memset(s,0,sizeof(s));
        i=0;total=0;
        while(i<n){
            cin>>s[i];
            total+=s[i];
            i++;
        }
        i=0;
        strcpy(result,"1");
        while(i<n){
            memset(temp,0,sizeof(temp));
            int lena=strlen(result);
            int lenb=strlen(c[total][s[i]]);
            int st[1000]={0},ed[1000]={0},re[1000]={0};
            for(k=0;k<lena;k++)
                st[k]=result[lena-k-1]-'0';
            for(k=0;k<lenb;k++)
                ed[k]=c[total][s[i]][lenb-k-1]-'0';
            for(k=0;k<lena;k++)
                for(j=0;j<lenb;j++){
                    re[k+j]+=st[k]*ed[j];
                    re[k+j+1]+=re[k+j]/10;
                    re[k+j]%=10;
                }
            int len=lena+lenb+2;
            while(re[len-1]==0&&len>=1)
                len--;
            for(k=0;k<len;k++)
                temp[k]=re[len-k-1]+'0';
            strcpy(result,temp);
            total-=s[i];
            i++;
        }
        cout<<result<<endl;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -