Pagini recente » Cod sursa (job #1228226) | Cod sursa (job #1513899) | Cod sursa (job #1324372) | Cod sursa (job #1702338) | Cod sursa (job #1488602)
#include <bits/stdc++.h>
using namespace std;
const int NUM_DIGS = 10;
const int MAX_DIGS = 1000;
int frecv[NUM_DIGS];
int h[2][MAX_DIGS + 1];
int prod[3 * MAX_DIGS];
int main()
{
ifstream in("prod.in");
ofstream out("prod.out");
bool line;
int t, q;
for (int i = 1; i < 10; i++)
in >> frecv[i];
line = 0;
for (int i = 9; i >= 1; i--)
{
while (frecv[i]--)
{
h[line][++h[line][0]] = i;
if (h[line][0] > h[line ^ 1][0])
line ^= 1;
else if (h[line][0] == h[line ^ 1][0])
{
int j = 1;
while ((j <= h[line][0]) && (h[0][j] == h[1][j]))
j++;
if (j <= h[line][0])
line ^= (h[line][j] > h[line ^ 1][j]);
}
}
}
reverse(h[0] + 1, h[0] + h[0][0] + 1);
reverse(h[1] + 1, h[1] + h[1][0] + 1);
prod[0] = h[1][0] + h[0][0] - 1;
for (int i = 1; i <= h[0][0]; i++)
{
for (int j = 1; j <= h[1][0]; j++)
prod[i + j - 1] += h[0][i] * h[1][j];
t = 0;
for (int j = 1; j <= prod[0]; j++)
{
t += prod[j];
q = t / 10;
prod[j] = t - (q << 1) - (q << 3);
t = q;
}
if (t)
prod[++prod[0]] = t;
}
for (int i = prod[0]; i > 0; i--)
out << prod[i];
out << '\n';
out.close();
return 0;
}