中级天翼
题目链接: 酷町堂: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;
}