Pagini recente » Borderou de evaluare (job #42009) | Profil The_Viper_The_Mountain_And_The_Imp | Cod sursa (job #476160) | Borderou de evaluare (job #183886) | Cod sursa (job #1200287)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("prod.in"); ofstream g("prod.out");
typedef int Mare[2002];
Mare a,b,p;
int comp(Mare x, Mare y)
{ if(x[0]>y[0]) return 1; else if(y[0]>x[0]) return -1;
for(int i=1;i<=x[0];i++)
if(x[i]>y[i]) return 1; else if(y[i]>x[i]) return -1;
return 0;
}
void prod(Mare A, Mare B, Mare C)
{ int i,j,T=0;
C[0]=A[0]+B[0]-1;
for(i=1;i<=A[0]+B[0];i++) C[i]=0;
for(i=1;i<=A[0];i++)
for(j=1;j<=B[0];j++) C[i+j-1]+=A[i]*B[j];
for(i=1;i<=C[0];i++) {C[i]+=T; T=C[i]/10; C[i]%=10;}
if(T) C[++C[0]]=T;
}
int main()
{ int i,f[10];
for(i=1;i<=9;i++) in>>f[i];
for(i=9;i>=1;i--)
while(f[i])
{ if(comp(a,b)>=0) b[0]++, b[b[0]]=i; else a[0]++, a[a[0]]=i;
f[i]--;
}
reverse(a+1,a+a[0]+1); reverse(b+1,b+b[0]+1);
prod(a,b,p);
for(i=p[0];i>=1;i--) g<<p[i];
g<<'\n'; g.close(); return 0;
}