Pagini recente » Cod sursa (job #2458877) | Cod sursa (job #2512727) | Cod sursa (job #2092297) | Cod sursa (job #1032563) | Cod sursa (job #515230)
Cod sursa(job #515230)
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define Nmax 1005
#define Cmax 502
using namespace std;
int v[Nmax],a[2][Cmax],c[Nmax];
int N;
inline void mul(int a[],int b[]){
int i,j,t;
memset(c,0,sizeof(c));
for(i=1;i<=a[0];++i){
for(j=1,t=0; j<=b[0] || t; ++j,t/=10)
c[i+j-1]=( t+=c[i+j-1]+a[i]*b[j] ) %10;
if(i+j-2>c[0]) c[0]=i+j-2;
}
while( c[0] && !c[c[0]] ) c[0]--;
}
int main(){
int i,nr,st,m;
freopen("prod.in","r",stdin);
freopen("prod.out","w",stdout);
for(i=1;i<10;++i){
scanf("%d",&nr); N+=nr;
while( nr ) v[++v[0]]=i, nr--;
}
reverse(v+1,v+N+1);
st=0; m=0;
for(i=1; i+1<=N; ){
a[st][++m]=v[i++];
a[st^1][m]=v[i++];
if( !st && a[0][m] != a[1][m] )
st^=1;
}
a[0][0]=a[1][0]=m;
if(N & 1){
for(i=1; a[0][i] == a[1][i]; ) ++i;
if( a[0][i] < a[1][i] ) a[0][++a[0][0]]=v[N];
else a[1][++a[1][0]]=v[N];
}
reverse(a[0]+1,a[0]+a[0][0]+1);
reverse(a[1]+1,a[1]+a[1][0]+1);
mul(a[0],a[1]);
for(i=c[0]; i>=1; --i) printf("%d",c[i]);
fclose(stdin); fclose(stdout);
return 0;
}