Для программистов :)

Свернуть
X
 
  • Время
  • Показать
Очистить всё
новые сообщения
  • Любопытный
    Участник

    • 07 September 2004
    • 366

    #1

    Для программистов :)

    Задача:

    Есть массив вещественных чисел размерности 2n-1, n достаточно большое, числа встречаются в массиве попарно. Найти недостающее число просмотрев массив один раз.
    Omne ignotum pro magnifico.
  • chibuk
    Я живу.

    • 07 October 2005
    • 868

    #2
    Интересная задача, я сразу заподозрил ответ, оказалось верно:
    находим сумму всех элементов массива, целочисленно делим на количество полных пар (n-2) и остаток от деления - искомое недостающее число.

    Комментарий

    • chibuk
      Я живу.

      • 07 October 2005
      • 868

      #3
      Ошибочка вышла: делим не на количество полных пар, а на количество парных элементов (2n-2)

      Комментарий

      • Любопытный
        Участник

        • 07 September 2004
        • 366

        #4
        Сообщение от chibuk
        Ошибочка вышла: делим не на количество полных пар, а на количество парных элементов (2n-2)
        Что такое " целочисленно делим" для вещественных чисел?
        К примеру: n=3

        a=[3.1 1 1.5 3.1 1.5]

        S/4=10.2/4=2.55
        S/4=10.2/4=4*2+2.2

        Видите, это не ответ.
        Omne ignotum pro magnifico.

        Комментарий

        • Tessaract
          Сатанист

          • 18 August 2004
          • 6119

          #5
          Нуууу, могли бы что-нибудь посложнее придумать!!!!

          Алгоритм довольно прост: берутся пары чисел, вычитаются друг из друга, а полученные результаты суммируются! Получившееся число и есть недостающее!

          Скажем в вашем случае:

          1. 3.1 - 1 = 2.1
          2. 1.5 - 3.1 = - 1.6

          2.1 + (-1.6) = 0.5

          1.5 - 0.5 = 1 - оно и есть недостающее!!

          Если надо, могу одробно обьяснить, почему так получается!!!
          Человек человеку волк!!!!!!!!!!!!!!!!

          Комментарий

          • Любопытный
            Участник

            • 07 September 2004
            • 366

            #6
            Если надо, могу одробно обьяснить, почему так получается!!!
            А если у нас будет a=[3.1 1 1.5 3.1 1]?

            Надо объяснить.
            Omne ignotum pro magnifico.

            Комментарий

            • Tessaract
              Сатанист

              • 18 August 2004
              • 6119

              #7
              Сообщение от Любопытный
              А если у нас будет a=[3.1 1 1.5 3.1 1]?

              Надо объяснить.
              А ну да, похоже там в зависимости от результата суммирования, надо либо вычитать либо складывать! Подумаю как-нибудь на досуге! Хотя похоже что придется еще определять минимальное число в ряду и "плясать" от этого, но это только предположение!
              Человек человеку волк!!!!!!!!!!!!!!!!

              Комментарий

              • Tessaract
                Сатанист

                • 18 August 2004
                • 6119

                #8
                Любопытный, уже столько времени прошло, может намекнете на решение?
                Человек человеку волк!!!!!!!!!!!!!!!!

                Комментарий

                Обработка...