@EvgenySManko

Задачка про прямоугольник (acmp). Почему не проходит?

Решал задачи на сайте 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), ведь максимальный размер сторон будет тогда, когда прямоугольник - квадрат
  • Вопрос задан
  • 973 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы