Pagini recente » Cod sursa (job #3262269) | Cod sursa (job #288339) | Cod sursa (job #143455) | Cod sursa (job #1739601) | Cod sursa (job #2399202)
#include <bits/stdc++.h>
using namespace std;
const int DIM = 2000;
int nr1[DIM], nr2[DIM], aux[DIM], cnt[10];
int cmp(int a[], int b[]) {
for (int i = 0; i <= a[0]; ++i) {
if (a[i] != b[i]) {
return a[i] < b[i] ? -1 : 1; } }
return 0; }
void mul(int a[], int b[]) {
int i, j, t;
for (i = 1; i <= a[0]; ++i) {
for (j = 1, t = 0; j <= b[0] or t; ++j, t /= 10) {
aux[i + j - 1] = (t += aux[i + j - 1] + a[i] * b[j]) % 10; }
aux[0] = max(aux[0], i + j - 2); }
for (int i = 0; i <= aux[0]; ++i) {
a[i] = aux[i]; } }
int main(void) {
freopen("prod.in", "r", stdin);
freopen("prod.out", "w", stdout);
for (int i = 1; i <= 9; ++i) {
cin >> cnt[i]; }
for (int i = 9; i >= 1; --i) {
while (cnt[i]--) {
if (cmp(nr1, nr2) <= 0) {
nr1[++nr1[0]] = i; }
else {
nr2[++nr2[0]] = i; } } }
reverse(nr1 + 1, nr1 + nr1[0] + 1);
reverse(nr2 + 1, nr2 + nr2[0] + 1);
mul(nr1, nr2);
for (int i = nr1[0]; i >= 1; --i) {
cout << nr1[i]; }
return 0; }