По каналу связи передается последовательность положительных целых чисел, все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается отдельно. В конце передается контрольное значение – наибольшее число R, удовлетворяющее следующим условиям:
1) R – произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных, но равных по величине элементов допускаются);
2) R делится на 33
На экзамене немного ошибся и вместо того, чтобы найти max11,max3,max33 и maxAll(макс из всех) делал вот что:
for (int i = 0; i < N; i++)
{
int next = in.nextInt();
if ((next % 33 == 0) && (next > max33))
{
if (max33 > max)
{
max = max33;
max33 = next;
} else max33 = next;
}
else if ((next % 11 == 0) && (next > max11))
{
if (max11 > max)
{
max = max11;
max11 = next;
} else max11 = next;
}
else if ((next % 3 == 0) && (next > max3))
{
if (max3 > max)
{
max = max3;
max3 = next;
} else max3 = next;
} else if (next > max)
max = next;
}
Скриншот прилагаю, если здесь неудобно -
http://screenshot.ru/upload/image/zGiC Чтобы решить эту проблему(в max, возможно, хранится не максимальное число) сделал такую проверку произведения:
int proizv = 0;
if (max33 * max > proizv)
proizv = max33 * max;
if (max3 * max11 > proizv)
proizv = max3 * max11;
if (max33 * max11 > proizv)
proizv = max33 * max11;
if (max33 * max3 > proizv)
proizv = max33 * max3;
Прошу ответить на вопрос решил ли я программу правильно/на сколько баллов?(мне за это поставили 1 балл)