Pagini recente » Cod sursa (job #841076) | Cod sursa (job #883496) | Cod sursa (job #1729705) | Cod sursa (job #2043947) | Cod sursa (job #1758974)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("prod.in");
ofstream cout("prod.out");
const int DIGITS = 10;
const int MAXD = 1000;
int frequency[DIGITS];
int a[1 + MAXD], b[1 + MAXD], c[3 + MAXD * MAXD];
inline bool Compare() {
if (a[0] != b[0])
return a[0] < b[0];
for (int i = 1; i <= a[0]; i++) {
if (a[i] < b[i])
return true;
if (a[i] > b[i])
return false;
}
return false;
}
void Multiply() {
for (int i = 1; i <= a[0]; i++)
for (int j = 1; j <= b[0]; j++)
c[a[0] - i + b[0] - j + 1] += a[i] * b[j];
c[0] = a[0] + b[0] - 1;
int add = 0, i = 1;
while (i <= c[0] || add) {
add += c[i];
c[i] = add % 10;
add /= 10;
i++;
}
i--;
c[0] = max(c[0], i);
}
int main() {
for (int i = 1; i <= 9; i++)
cin >> frequency[i];
for (int i = 9; i; i--)
for (int j = 1; j <= frequency[i]; j++)
if (Compare()) {
a[0]++;
a[a[0]] = i;
}
else {
b[0]++;
b[b[0]] = i;
}
Multiply();
for (int i = c[0]; i; i--)
cout << c[i];
return 0;
}