Pagini recente » Istoria paginii preoni-2006/runda-4 | Razvy | Razvy | Cod sursa (job #1583721) | Cod sursa (job #2671330)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prod.in");
ofstream g("prod.out");
int cif[10], s;
int n1[2005], n2[2005], rez[2005];
void Read()
{
for(int i = 1;i <= 9;++i)
f>>cif[i];
}
bool compare()
{
for(int i = 1;i <= n1[0];++i)
if(n1[i] != n2[i])
return n1[i] < n2[i];
return true;
}
bool numbers()
{
for(int i = 9;i >= 1;--i)
while(cif[i])
{
if(n1[0] < n2[0]) n1[++n1[0]] = i;
else if(n1[0] > n2[0]) n2[++n2[0]] = i;
else
{
if(compare())
n1[++n1[0]] = i;
else
n2[++n2[0]] = i;
}
--cif[i];
}
reverse(n1 + 1, n1 + n1[0] + 1);
reverse(n2 + 1, n2 + n2[0] + 1);
}
void multiply()
{
int i, j, t;
for(i = 1;i <= n1[0];++i)
{
for(t = 0, j = 1;j <= n2[0] || t;++j, t /= 10)
rez[i + j - 1] = (t += rez[i + j - 1] + n1[i] * n2[j]) % 10;
rez[0] = max(rez[0], i + j - 2);
}
}
void Solve()
{
numbers();
multiply();
for(int i = rez[0];i >= 1;--i)
g<<rez[i];
}
int main()
{
Read();
Solve();
return 0;
}