题目大意:
给出n个数,每个数都小于10^24(1000000000000000000000000),求它们的积
解题思路:
赤裸裸的高精乘
没A的原因是题目给出数据1024,而不是10^24,只拿了30分。
源程序:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int N=2501;
int ans[N+5],a[N+5],b[N+5],n,lena,lenb,lab;
char c[50];
void Altc()
{
for (int i=1;i<=lena;i++)
{
for (int j=1;j<=lenb;j++)
{
ans[i+j-1]+=a[i]*b[j];
ans[i+j]+=ans[i+j-1]/10;
ans[i+j-1]%=10;
}
}
lab=N;
while (lab>1&&!ans[lab]) lab--;
lena=lab;
for (int i=1;i<=lena;i++) a[i]=ans[i],ans[i]=0;
}
int main()
{
scanf("%d",&n);
a[1]=1;lena=1;
for (int k=1;k<=n;k++)
{
cin>>c;
lenb=strlen(c);
for (int i=1;i<=lenb;i++)
b[i]=(int)(c[lenb-i]-48);
Altc();
}
for (int i=lena;i>=1;i--) printf("%d",a[i]);
}