Решал задачи на сайте acmp.ru, и попалась вроде бы легкая задачка, однако мое решение не проходит тест.
Суть заключается в том, что требуется определить количество возможных прямоугольников, имеющих площадь от A до B и периметр от C до D. Полный текст задачи -
acmp.ru/asp/do/index.asp?main=task&id_problem=682.
Мое решение заключается в переборе всех возможных площадей (от A до B) и поиске двух множителей, произведение которых равно текущей площади. Далее проверяем эти стороны (множители) на соответствие периметру.
int count = 0; //счетчик
for(int s = a; s <= b; s++){ //перебираем площади
for(int x = 1; x < s; x++){
if(s%x==0){ //перебираем множители
int y = s/x;
int p = 2*(x+y);
if(p>=c&p<=d&x<=y){ //проверяем периметр и запрещаем повтор(x*y=y*x)
count++;
System.out.println(x+" "+y);
}
}
}
}
Причем самый первый тест, который дали в условии работает правильно.
UPD: Решил задачу, оказывается перебирать нужно до sqrt(b), ведь максимальный размер сторон будет тогда, когда прямоугольник - квадрат