Pagini recente » Cod sursa (job #874363) | Cod sursa (job #3193290) | Cod sursa (job #1109556) | Cod sursa (job #332013) | Cod sursa (job #1796909)
#include<bits/stdc++.h>
using namespace std;
ifstream f("prod.in");
ofstream g("prod.out");
int i,fr[10],a[1<<10],b[1<<10],p[1<<10];
bool comp(int x[],int y[])
{
if(x[0]!=y[0]) return x[0]>y[0];
for(int i=1;i<=x[0];i++)
if(x[i]!=y[i]) return x[i]>y[i];
return 1;
}
void prod(int A[],int B[],int 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()
{
for(i=1;i<=9;i++) f>>fr[i];
for(i=9;i;i--)
while(fr[i])
{
if(comp(a,b)) b[++b[0]]=i;
else a[++a[0]]=i;
fr[i]--;
}
reverse(a+1,a+a[0]+1);
reverse(b+1,b+b[0]+1);
prod(a,b,p);
for(i=p[0];i>0;--i) g<<p[i];
return 0;
}