int main ()
{
unsigned int a, b, c, d;
scanf ("%i", &a); //ввод данных
scanf ("%i", &b);
scanf ("%i", &c);
scanf ("%i", &d);
if (d==a*b*c) { //если выполнено начальное условие
printf ("d = a*b*c"); //выводим сообщение и заканчиваем программу
return 0;
}
int i, j, k;
bool f = true; //флаг отсутствия множителей
for (i = 1; i<=d/2; i++) { //первый множитель
if (d%i!=0) continue; //если не множитель - пропускаем
for (j=i; j<=d/2; j++) { //второй множитель, больший чем первый
if (d%j!=0) continue; //если не множитель - пропускаем
for (k=j; k<=d/2; k++) { //третий множитель, больший чем второй
if (d%k!=0) continue; //если не множитель, пропускаем
if (i*j*k==d) { //если получаем число
if (f) //если множителей ещё не было
{a = i; b = j; c = k; f = false;} //сохраняем текущие и выставляем флаг
else //иначе проверяем, какие множители между собой ближе
if (abs(a-b)>abs(i-j) || abs(b-c)>abs(j-k))
{a = i; b = j; c = k;} //если новые оказались ближе, сохраняем их
}
}
}
}
if (f) printf ("\nResult: %i*1*1=%i", d, d); //если множителей нет, то вариант 1*1*само_число
else printf ("\nResult1: %i*%i*%i=%i", c, b, a, d); //иначе выводим полученный результат
getch (); //ожидание реакции пользователя
return 0;
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.