Для записи одного из 13 значений требуется log(2)13 ≈ 4 разряда, для записи одного из 99 значений - log(2)99 ≈ 7 разрядов, т.е. в 7/4 - 1,75 раз больше.
Решение смотри во вложении.
Int c[6][6], p[2], index, buff;
p[0] = 0;
//заполняем массив рандомными числами от 0 до 10
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
c[i][j] = 0 + rand()%10; //заполнил рандомными числам от 0 до 10
}
}
//теперь проходим массив по столбцам и просчитываем их произведение
for (int j = 0; j < 6; j++)
{
for (int i = 0; i < 6; i++)
{
p[1] *= c[i][j]; //произведение столбца
}
//проверяем если произведение предыдущего столбца меньше
//то мы записываем индекс большего столбца
if (p[0] < p[1])
{
p[0] = p[1];
index = j;
}
}
//и собственно меняем наши столбцы местами
for (int i = 0; i < 6; i++)
{
buff = c[i][0];
c[i][0] = c[i][index];
c[i][index] = buff;
}
дальше с выводом и библиотеками думаю сам разберешься
1) 100 Кбайт
64*40*40*8=819200 бит
819200 бит=100 Кбайт