问题标题: 酷町堂:2757 求n个数的乘积

0
0
已解决
丁博扬
丁博扬
中级天翼
中级天翼

题目链接: 酷町堂:2757

2757   求n个数的乘积

经验值:1200 时间限制:1000毫秒

题目描述 Description

输入n个数字,请你计算他们的乘积。

输入描述 Input Description

第一行:n,1<n<1000
第二行:n个整数

输出描述 Output Description

一个整数,为n个数乘积的结果

样例输入 Sample Input

3 3 4 5

样例输出 Sample Output

60

 

WA70分代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<iomanip>
#include<cstring>
using namespace std;
string s[1000005];
int a[1005],b[1005],c[2005];
string gao(string s,string s1){
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    a[0]=s.size();
    b[0]=s1.size();
    for(int i=1;i<=a[0];++i){
        a[i]=s[a[0]-i]-'0';
    }
    for(int i=1;i<=b[0];++i){
        b[i]=s1[b[0]-i]-'0';
    }
    c[0]=a[0]+b[0];
    for(int i=1;i<=a[0];i++){
        for(int j=1;j<=b[0];j++){
            c[i+j-1]+=a[i]*b[j];
        }
    }
    for(int i=1;i<=a[0]+b[0]-1;i++){
        c[i+1]+=c[i]/10;
        c[i]%=10;
    }
    while(c[0]!=1&&c[c[0]]==0){
        c[0]--;
    }
    string gao1="";
    for(int i=c[0];i>=1;i--){
        gao1+=(c[i]+'0');
    }
    return gao1;
}
int main(){
    int n;
    cin>>n;
    s[0]="1";
    for(int i=1;i<=n;i++){
        cin>>s[i];
        s[i]=gao(s[i-1],s[i]);
        //cout<<s[i]<<endl;
    }
    cout<<s[n];
    return 0;
}


0
已采纳
沈吴敏
沈吴敏
新手天翼
新手天翼

1000个数相乘的结果,是多少位数?

0
0
我要回答