Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
[Вернуться к задаче]   1
  1  Рябцев Роман Денисович, 07 июня 2023 г. 18:39:41
     Пытался решить через целые числа. Смог сдать только после того, как прочитал в комментариях, что нужно округлять q до ближайшего целого. Можете объяснить, что не так если мы просто умножим на 1000 и переведём в int, как бы округлив до ближайшего снизу?
     Дело в том, что вещественный тип с плавающей точкой не может представить некоторые числа точно. Например, 1.001 - это в реальности бесконечная дробь 1.000999999999999889865875957184... Соответственно, когда мы какие-то из этих чисел умножаем на 1000 - может получиться значение чуть меньше числа, которое хотели представить, умноженного на 1000. И тогда отбрасывание дробной части существенно исказит число, а округление к ближайшему даст правильное число.
  2  Галяутдинов Артур Юрисович, 17 мая 2023 г. 13:33:57
     50% времени возишься с тем чтобы понять что написано в условии, и ещё половину чтобы понять что тесты не проходят из за погрешности
  3  Пак С.В., 03 декабря 2022 г. 2:39:52
     у меня java.util.Scanner#nextDouble выдавал RuntimeError, Double.parseDouble работает
     Можно в начале программы до создания сканера написать Locale.setDefault(Locale.US);
  4  Кудрин Максим Витальевич, 08 января 2020 г. 19:57:54
     Если не брать в счет погрешности и то, что условия этой задачи необходимо понять, то она действительно не такая уж сложная
  5  Зинов Вадим, 21 ноября 2019 г. 22:10:15
     Да уж, погрешности float и double при сравнении смущают. Казалось бы было где им накопится, однака что есть то есть.
  6  Трохачев Андрей Вадимович, 28 октября 2019 г. 23:42:08
     C горем пополам сдал эту задачку, тут важно учитывать погрешность вычислений.Всем удачи)
  7  Литвиненко Михаил Максимович, 23 июня 2019 г. 17:14:37
     Кто не понял: дают x1, x2, y1, y2; |x|*q >= |y|, где |a| = (a1^2+a2^2)^(1/2) И так для каждой пары чисел.
  8  Деев Роман Александрович, 08 июля 2018 г. 1:04:29
     Решая с помощью целых чисел, не забывайте правильно переводить из дробных чисел в целые. Умножив на 1000, округлите, а потом приводите к int.
     Я бы даже уточнил "округлите к ближайшему"
  9  Морозов Игорь Олегович, 18 апреля 2017 г. 14:30:49
     Сдал целочисленное решение на GNU C++. Домножьте q на 1000 и возведите обе части неравенства в квадрат, получите AC
  10  Петров Максим Андреевич, 23 июля 2015 г. 11:08:16
     Не очень правильно считать оператор сжимающим, если он сжимает n точек - ведь в определении требуется выполнение неравенства для любых точек из исследуемой области. Может имеет смысл изменить вывод программы с YES на MAYBE?
  11  Alex AleXXX Under, 25 сентября 2008 г. 9:10:10
     WA на первом тесте. Можете его привести? ужс не понимаю все мои тесты проходят все норм, не понимаю где косяк.
     Первый тест совпадает с первым тестом в примере. Вы просто не выводите Yes или No. Вместо этого у вас YES или NO. Будьте внимательны, регистр здесь важен!
  12  Посаженников Максим Сергеевич, 26 июня 2008 г. 14:07:04
     Сложность здесь заключается в понимании того, что от тебя хотят:)
     Да, не самая приятная задача в плане понимания условия :)
  13  Зайцев Вадим Евгеньевич, 23 декабря 2007 г. 20:20:57
     Правильно ли я понял условие: в каждой из n строк записаны координаты точек x1, y1, x2, y2 и если расстояние от первой точки до начала координат умноженное на q больше или равно расстоянию от второй точки до начала координат, то оператор мона назвать сжимающим с коэффициентом q?
     Примерно так, но это должно выполняться для всех пар координат в каждой строчке.
 1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru