Pagini recente » Cod sursa (job #876360) | Cod sursa (job #2443674) | Cod sursa (job #618005) | Cod sursa (job #2481447) | Cod sursa (job #714957)
Cod sursa(job #714957)
#include <cstdio>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> a[2],sol;
int nr[10];
void read ()
{
ifstream in ("prod.in");
for(int i=1;i<10;++i)
in>>nr[i];
}
int cmp ()
{
if(a[0].size()<a[1].size())
return 0;
if(a[0].size()>a[1].size())
return 1;
for(size_t i=0;i<a[0].size();++i)
{
if(a[0][i]<a[1][i])
return 0;
if(a[0][i]>a[1][i])
return 1;
}
return 0;
}
void prd ()
{
sol.resize(a[0].size()+a[1].size());
for(size_t i=0;i<a[0].size();++i)
for(int j=0,t=0;j<=(int)a[1].size()||t;++j,t/=10)
sol[i+j]=(t+=(sol[i+j]+a[0][i]*a[1][j]))%10;
}
void solve ()
{
for(int i=9;i>0;--i)
for(;nr[i];--nr[i])
{
int ind=cmp();
a[ind].push_back(i);
}
reverse(a[0].begin(),a[0].end());
reverse(a[1].begin(),a[1].end());
prd();
reverse(sol.begin(),sol.end());
}
void out ()
{
freopen ("prod.out","w",stdout);
for(vector<int>::iterator i=sol.begin();i<sol.end();++i)
printf("%d",*i);
}
int main ()
{
read ();
solve ();
out ();
return 0;
}