Блог пользователя AlexanderBolshakov

Автор AlexanderBolshakov, 12 лет назад, По-русски

http://codeforces.net/contest/185/submission/1656438 — что это такое?! Погрешность идет в восьмом знаке. Почему в чекере проверка на <= выполняется без эпсилона?

  • Проголосовать: нравится
  • -21
  • Проголосовать: не нравится

»
12 лет назад, # |
  Проголосовать: нравится -11 Проголосовать: не нравится

Сравнение идет по логарифмам, а не по самим числам.

»
12 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

Кстати, действительно интересно. Но так как в условии ничего не написано на сравнение суммы с EPS, то поведение чекера оправдано — он не более строгий, чем полагается по условию.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится -6 Проголосовать: не нравится

    В любом случае, проверка на <= без эпсилона выполняться не должна, или я где-то тут ошибаюсь?

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится -8 Проголосовать: не нравится

      Мне кажется, ошибаетесь. Вы выводите какие-то конкретные точные числа и можете гарантировать, чтобы сумма была <= без всяких EPS, поскольку сложение тоже можно (в теории) выполнить абсолютно точно. Значит, чекер вправе требовать точного соответствия.

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Становится интереснее: вот это решение получило АС. Я всего лишь вывел ответ с 10 знаками после запятой вместо восьми.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Ну может и сумма от этого точнее стала?

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится -8 Проголосовать: не нравится

      Ну может речь в топике идет не об этом? :)

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Как это не об этом? У многих претесты не проходило из-за того что выводили с недостаточной точностью. У меня, например, с 9 знаками не проходило 7 претест, а с 15 прошло. Наверное в чекере стоит эпсилон 1e-10 для проверки суммы.

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится +12 Проголосовать: не нравится

          Мне Gerald только что ответил в ПМ, что проверка действительно идет с эпсилоном.

      • »
        »
        »
        »
        12 лет назад, # ^ |
        Rev. 11   Проголосовать: нравится -10 Проголосовать: не нравится

        Не понятно:-O. Вам чекер говорит,что сумма больше той, что нужно. и это действительно так: cложите print 367.94063862+365.46123855+168.59812284 получится 902.00000001. А если сложить то, что выводится с точностью .10 то сумма будет 902.0000000000000...(то есть,она верна с необходимой точностью) .

        Вопрос тут в том, почему чекер вообще гвоорит об этой погрешности в сумме, если в условии таких ограничений на нее не было. Возможно, погрешность в логарифме, о которой было сказано, превышает погрешность в сумме,поэтому странным тут можно считать только вывод чекера:)

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          А где она была указана, эта "необходимая точность"?

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
              Проголосовать: нравится +5 Проголосовать: не нравится

            Если её не указано, то лучше считать, что она равна нулю — так не ошибёшься.

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
            Rev. 10   Проголосовать: нравится +4 Проголосовать: не нравится

            А зачем ее указывать ? o_O. Погрешности за одно значение и знания теории погрешностей достаточно. Если погрешность на число равна A,то на его квадрат

            2 * A * число

            .Отсюда следует,что если числа >1,то погрешность при возведении в любую степень сильно увеличится, и тем более если погрешность задана на логарифм.

            Имхо,для большинства случаев чекер даже более лояльный чем условие, погрешность той суммы должна действительно стремиться к 0.

            • »
              »
              »
              »
              »
              »
              »
              12 лет назад, # ^ |
                Проголосовать: нравится +1 Проголосовать: не нравится

              Заклинили Вы на своих логарифмах. В тернарном поиске у меня равенство суммы соблюдается достаточно точно.

              P.S. После такого неприятного опыта я буду всегда в подобных задачах выводить ответ с 20 знаками после запятой...

              • »
                »
                »
                »
                »
                »
                »
                »
                12 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                Вообще причин не выводить с 20 (я всегда делаю 18) знаками нету. Это одна из привычек которую хорошо в себе развить :о)

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  12 лет назад, # ^ |
                    Проголосовать: нравится +8 Проголосовать: не нравится

                  Иногда просят вывести с ровно 4-я знаками после запятой. Тогда можно сравнивать без EPS вообще и вся точность — внутренние проблемы решения.