加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

1261 大数与常数的乘除

发布时间:2020-12-14 03:05:18 所属栏目:大数据 来源:网络整理
导读:#includeiostream#includevector#includestring#includealgorithmusing namespace std;int num[27];vectorstringfacs;string Divide(const string str,int n){ int len=str.size()-1; string s=""; int c=0,p=0; for(int i=0;i=len;i++){ c=p*10+str[i]-'0';
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int num[27];
vector<string>facs;

string Divide(const string &str,int n){
    int len=str.size()-1;
    string s="";
    int c=0,p=0;
    for(int i=0;i<=len;i++){
        c=p*10+str[i]-'0';
        p=c%n;
        c/=n;
        if(c==0&&s.size()==0)continue;
        else s+=(c+'0');
    }
    return s;
}

string Multiple(const string &str,int n){
    int len=str.size()-1;
    int c=0,p=0;
    string s="";
    for(int i=len;i>=0;i--){
        c=(str[i]-'0')*n+p;
        p=c/10;
        c%=10;
        s+=(c+'0');
    }
    while(p){
        c=p%10;
        p/=10;
        s+=(c+'0');
    }
    reverse(s.begin(),s.end());//字符串倒置
    return s;
}

void Calucate_Facs(){
    facs.push_back("1");//0的阶乘
    facs.push_back("1");//1的阶乘
    facs.push_back("2");//2的阶乘
    string tmp="2";
    for(int i=3;i<=26*12;i++){
        tmp=Multiple(tmp,i);
        facs.push_back(tmp);
    }
}

int main(){
    Calucate_Facs();//一开始打表计算阶乘
    int n;
    while(~scanf("%d",&n)&&n){
        string s="",str="";
        int sum=0;
        for(int i=0;i<n;i++){
            scanf("%d",&num[i]);
            sum+=num[i];
        }
        str=facs[sum];
        for(int i=0;i<n;i++){
            for(int j=2;j<=num[i];j++){
                str=Divide(str,j);
            }
        }
        cout<<str<<endl;
    }
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读