Pagini recente » Cod sursa (job #291584) | Cod sursa (job #3162042) | Cod sursa (job #2370997) | Cod sursa (job #2543923) | Cod sursa (job #1716689)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("prod.in");
ofstream fout("prod.out");
const int base= 10;
int v[10];
vector <int> x[0];
void h_write( vector <int> &x ) {
for ( int i= (int)x.size()-1; i>=0; --i ) {
fout<<x[i];
}
fout<<"\n";
}
void h_reverse( vector <int> &x ) {
vector <int> aux;
for ( int i= (int)x.size()-1; i>=0; --i ) {
aux.push_back(x[i]);
}
x= aux;
}
void hh_mult( vector <int> &x, vector <int> &y ) {
vector <int> z;
z.resize( (int)x.size()+(int)y.size() );
for ( int i= 0; i<(int)x.size(); ++i ) {
int t= 0;
for ( int j= 0; j<(int)y.size() || t!=0; ++j ) {
z[i+j]+= t;
if ( j<(int)y.size() ) {
z[i+j]= z[i+j]+x[i]*y[j];
}
t= z[i+j]/base;
z[i+j]%= base;
}
}
while ( z.back()==0 && (int)z.size()>=2 ) {
z.pop_back();
}
x= z;
}
int main( ) {
for ( int i= 1; i<=9; ++i ) {
fin>>v[i];
}
for ( int i= 9, t= 0; i>=1; --i ) {
for ( int j= 1; j<=v[i]; ++j, t^= 1 ) {
x[t].push_back(i);
}
if ( x[0].size()>x[1].size() ) {
for ( ; i-1>=1 && v[i-1]==0; --i ) ;
if ( i-1>=1 ) {
x[1].push_back(i-1);
--v[i-1];
}
}
}
h_reverse(x[0]), h_reverse(x[1]);
hh_mult(x[0], x[1]);
h_write(x[0]);
return 0;
}