Pagini recente » Cod sursa (job #2255505) | Cod sursa (job #1584284) | Cod sursa (job #1522480) | Cod sursa (job #1844073) | Cod sursa (job #469855)
Cod sursa(job #469855)
#include<fstream>
using namespace std;
void inm(int a[], int b[], int c[])
{
for (int i = 1; i <= a[0]; ++i)
for (int j = 1; j <= b[0]; ++j)
{
c[i + j - 1] += a[i] * b[j];
c[0] = i + j - 1;
if (c[i + j - 1] > 9)
{
c[i + j] += c[i + j - 1] / 10;
c[i + j - 1] %= 10;
c[0] = i + j;
}
}
while (c[c[0]] > 9)
{
c[++c[0]] += c[c[0] - 1] / 10;
c[c[0] - 1] %= 10;
}
}
bool cmp(int* a, int* b)
{
if (a[0] != b[0])
return a[0] > b[0];
for (int i = 1; i <= a[0]; ++i)
if (a[i] != b[i])
return a[i] > b[i];
return 0;
}
int c[10], r[3][3001];
int main()
{
ifstream fin("prod.in");
ofstream fout("prod.out");
for (int i = 1; i <= 9; ++i)
fin >> c[i];
int act = 0;
for (int i = 9; i >= 1; --i)
while (c[i]--)
{
act = cmp(r[0], r[1]);
r[act][++r[act][0]] = i;
}
reverse(r[0] + 1, r[0] + r[0][0] + 1);
reverse(r[1] + 1, r[1] + r[1][0] + 1);
inm(r[0], r[1], r[2]);
for (int i = r[2][0]; i >= 1; --i)
fout << r[2][i];
}